自用java学习笔记
定义成员内部类
public class Outer_Inner {
private int num =10;
// 内部类可以直接访问外部类的成员,包括私有成员
// 外部类访问内部类成员必须创建对象
public class inner {
public void show(){
System.out.println(num);
}
}
public void method() {
inner i=new inner();
i.show();
}
}
定义局部内部类
public class JubuOuter {
private int num = 10;
public void method(){
class Inner{
public void show(){
System.out.println(num);
}
}
Inner i = new Inner();
i.show();
}
}
定义匿名内部类
// 匿名内部类,本质是一个继承该类名或实现该接口的子类匿名对象,是局部内部类的特殊形式
public class Aouter {
public void method(){
new Inter(){
@Override
public void show() {
System.out.println("匿名内部类");
}
}.show();
// 注意匿名内部类大括号最后有分号,因为匿名内部类没有类名,直接在最后调用方法
Inter i = new Inter() {
@Override
public void show() {
System.out.println("多态方法调用匿名内部类");
}
};
i.show();
}
}
匿名内部类是子类匿名对象,所以要继承其他类名或实现一个接口
定义接口
public interface Inter {
void show();
}
测试内部类
public class Demo {
public static void main(String[] args) {
Outer_Inner.inner oi = new Outer_Inner().new inner();
oi.show();
Outer_Inner o = new Outer_Inner();
o.method();
JubuOuter jo = new JubuOuter();
jo.method();
Aouter a = new Aouter();
a.method();
}
}