1.内部类可以直接访问外部类的成员(包括私有属性);外部类访问内部类需要创建对象;
2.外界测试类中如何创建对象使用成员内部类
格式:外部类名.内部类名 对象名 = new Outer( ).new Inner( );
Outer2.Inner oi = new Outer2().new Inner();
oi.show();
3.局部内部类是在方法中定义的类,所以外结是无法直接而使用的,需要在方法内部创建对象并使用;该类可以直接访问外部类的成员,也可以访问方法内的局部变量
public class Outer3 {
//局部内部类
private int num = 10;
public void method(){
int num2 = 20;
class Inner{
public void show(){
System.out.println(num);
System.out.println(num2);
}
}
Inner i = new Inner();
i.show();
}
}
public class Test3 {
public static void main(String[] args) {
Outer3 o = new Outer3();
o.method();
}
}
4.匿名内部类
public class Outer4 {
/*前提:
* 存在一个类或者接口
* 这个类可以是具体类也可以是抽象类
* 格式:
* new 类名或者接口名(){
* 重写方法;
* }; ------->这个分号不要漏
* 本质是什么?
* 是一个继承了该类或者实现了该接口的匿名子类对象
*
* 匿名内部类是局部内部类的一种特殊形式
*/
public void method(){
/*new Inner(){
@Override
public void show() {
System.out.println("这是匿名内部类");
}
}.show();
*/
Inner i =new Inner(){
@Override
public void show() {
System.out.println("这是匿名内部类");
}
};
i.show();
}
}
public class Test4 {
public static void main(String[] args) {
Outer4 o = new Outer4();
o.method();
}
}