1.成员内部类
外部类调用内部类成员的方式:
格式:
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
变量名.内部类成员
*打印同名成员变量的方法:*
//分别打印 1,2,3
public class Outer{
int I = 1;
class Inner{
int I = 2;
public void inner(){
int I = 3;
System.out.println(Outer.this.i);
System.out.println(this.i);
System.out.println(i);
}
}
}
2.局部内部类
public class Outer {
public void out(){
class Inner {
public void inner(){
System.out.println("局部内部类");
}
}
Inner in = new Inner();
in.inner();
}
}
没什么特别的调用方式,直接调用外部类的方法
3.匿名内部类
直接创建出子类和子类的对象,所以必须是继承一个类或者实现一个接口
public interface Smoking {
public abstract void smoking();
}
/*
* 没有使用内部类的写法:
* 定义实现类,实现接口,重写接口抽象方法,创建实现类对象
* class XXX implements Smoking{
* public void smoking(){
*
* }
* }
* XXX x = new XXX();
* x.smoking();
* Smoking s = new XXX();
* s.smoking();
*
*/
public class Test {
public static void main(String[] args) {
//使用匿名内部类,定义实现类,实现接口,重写接口抽象方法,创建实现类对象简化,以上合为一步
/*
* 格式:
* new 接口或者父类(){
* 重写抽象方法
* };
*/
new Smoking(){
public void smoking(){
System.out.println(“匿名内部类”);
}
}.smoking();
}
}