java------内部类

来源:互联网 发布:视频系统源码 编辑:程序博客网 时间:2024/05/16 01:08


一:内部类:

内部类的访问规则:

1.内部类可以直接访问外部类中的成员,包括私有的。

如果内部类要访问外部类中的成员,则要在内部类中持有一个外部类的引用

格式为: 外部类名.this

2.外部类要访问内部类,必须建立内部类对象。

内部类定义在局部时:

不可以被成员修饰符修饰

可以直接访问外部类中的成员,因为还持有外部类中的引用 但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。

访问格式:

当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。

可以直接建立内部类对象。

格式:

外部类名.内部类名 变量名 = new外部类名.new内部类名

单个内部类在乘员位置上,就可以被成员修饰符。

比如:privae:将内部类在外部类中进行封装

Static:内部类具备了静态的特性

当内部类被static修饰后,只能直接访问外部类中的static成员,局限性。

二:匿名内部类:

匿名内部类其实就是内部类的简写形式

定义匿名内部类的前提 内部类不惜继承一个类或者实现接口

 格式:

3 new 父类 或接口(){定义子类内容}

匿名内部类就是一个匿名子类对象

内部类例子:

class Outer

{

    private int x =3;

    

    class Inner

    {

void function()

{

    System.out.println("innwe: " +x);

}

    }

    void method(){

Inner in = new Inner();

in.function();

    }

}

public class InnerClassDemo

{

    public static void main(String[] args)

    {

Outer out = new Outer();//第一种方式

out.method();

//直接访问内部类的成员

Outer.Inner in = new Outer().new Inner();

in.function();

    }

}

匿名内部类例子:

abstract class AbsDemo{//定义抽象类

    abstract void show();

}

class Outer1{

    int x = 3;

    

    public void function(){

new AbsDemo()//这就是匿名内部类

{

    void show()

    {

System.out.println("show = " + x);

    }

}.show();

    }

    

}

public class InterClassDemo2

{

    public static void main(String[] args){

Outer1 o = new Outer1();

o.function();

    }

}



原创粉丝点击