您的位置:首页 > 职场人生

黑马程序员—内部类

2013-09-25 13:09 190 查看
1,内部类可以直接访问外部类的成员。包括私有。原因是内部类持有外部类的引用。外部类名.this.

2,外部类要访问内部类。需要建立内部类对象。其他类访问其内部类方式。Outer.Inner in =new Outer().new Inner();如果内部类被私有。则无法访问。只能被内部类的外部类访问。
3,内部类在成员上被static修饰时。只能访问外部类的静态成员。
注意:内部类定义了静态成员。内部类也必须是静态的。
--------外部类的静态方法访问内部类。内部类也必须是静态的。
class Outer{
int x=3;//Out.this.x
class Inner{
int x=4;//this.x
void method(){
int x=5;
System.out.print(x);
}
}
}

4,内部类被定义在局部时,不可被成员修饰符修饰,可以直接访问外部类成员,因为持有外部类引用。但是不能访问所在局部的变量,除非被final修饰。如果想调用内部类必须在局部创建引用,调用其方法。
class Outer{
void method(final int y){
final int x=4;
class Inner{
void show(){ System.out.println(x+y); };
}
Inner i=new Inner();
i.show();
};
}

匿名内部类就是内部类的简写格式,前提是必须继承一个类或者实现了一个接口。用父类或者接口的名字直接建立子类对象,定义子类内容。

匿名内部类可以用父类的引用的。但是这个引用只能调用父类的方法和成员。无法调用子类的特有方法。

abstract class Inter{

void method();

}

Test{

}

Test.function().method()的理解。因为没有new。所以function 一定是静态的。因为function有括号。所以他一定是一个方法。

而且返回值是一个Inter的子类对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: