一、内部类
内部类特征:内部类当中可以调用外部类当中的属性和方法,而外部类却不能调用内部类当中的。
public class A {
private int x = 10;
public static void main(String[] args) {
A.B b = new A().new B();
b.say();
}
class B{
public void say() {
hi();
System.out.println(x*10);
}
}
public void hi() {
System.out.println("我是外部类方法hi");
}
}
打印如下:
我是外部类方法hi
100
说明内部类可以访问外部类的属性和方法。
二、匿名内部类
匿名内部类可以继承两类数据接口
1. 抽象类
2. 接口
public abstract class A {
public abstract void say();
}
public class B extends A {
@Override
public void say() {
System.out.println("我是实现类的方法say");
}
}
public class Test {
public static void main(String[] args) {
// 不使用匿名内部类的调用方式
A a1 = new B();
a1.say();
// 使用匿名内部类的调用方式
A a2 = new A(){
@Override
public void say() {
System.out.println("我是匿名内部类的方法say");
}
};
a2.say();
}
}
打印如下:
我是实现类的方法say
我是匿名内部类的方法say