内部类

来源:互联网 发布:idc数据公司 编辑:程序博客网 时间:2024/06/05 20:57

内部类

可以将一个类的定义放在另一个类的定义内部,这就是内部类
内部类有效地是实现了”多重继承”,内部类允许继承多个非接口类型(类或抽象类)

创建内部类

如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,一般指在静态方法内,如main(),需要具体指明这个对象的类型:OuterClassName.InnerClassName

Parcel p = new Parcel();Parcel.Content c = q.content();

连接到外部类

内部类自动拥有对其外围类所有成员的访问权

使用.this与.new

.this, 生成对外部类对象的引用

return Parcel.this;

.new,告知外部对象,去创建其某个内部类的对象

Parcel.Content c = q.new Content();

在方法和作用域内的内部类

在定义内部类的作用域之外,它是不可用的

if(b){    class Inner{        Inner(){}    }    new Inner();}

匿名类

public Content content{    return new Content(){    private int i = 1;    public int value(){return 2}    };}

创建一个继承自Content的匿名类的对象
匿名类使用在其外部定义的对象,编译器要求其参数引用是final的

嵌套类

声明为static的内部类
不需要内部类对象与其外围类对象有联系

局部内部类

  • 我们需要一个已命名的构造器,或者需要重载构造器,而匿名内部类只能用于实例初始化
  • 需要不止一个该内部类的对象
0 0
原创粉丝点击