接口 抽象类 不能实例化
一个类镶嵌在另一个类中,那么这个类叫做内部类,包含内部类的类称为外部类
内部类相当于外部类的成员变量或方法
public class Outer{ private String out_string="这是外部类的私有属性"; public void useInner(){ Inner in= new Inner(); in.print(); } //创建内部类 class Inner{ public void print(){ System.out.println(out_string); } } }
public class InnerTest{ public static void main(String[] agrs){ Outer out=new Outer; out.useInner(); }}
内部类的构建:
Outer out =new Outer();//外部类
Outer.Inner in= out.new.Inner();//内部类
in.println();
public class InnerTest{ public static void main(String[] agrs){ Outer out=new Outer(); //out.useInner(); Outer.Inner in=out.new Inner(); in.println(); } }
匿名内部类
成员内部类 :public class Outer{
...
class Inner{
}
}
public classTestInner{ public static void main(String[] agrs){ OuterI outer=new OuterI(){ @Override public void show(){ System.out.println("这是匿名内部类的show方法"); } }; outer.show(); } } interface OuterI{ public void show(); }
}
局部内部类
在类的局部位置定义
在局部内部类里访问外部类的所有成员变量
public class TestInner{ } class Outer{ private String name; public void eat(final int i){ class Inner{ public void innerEat(){ System.out.println(name); System.out.println(i); }
} }
}
静态内部类
在内部类前添加static 修饰符
静态内部类中可以声明static成员变量;非静态内部类中不可以
静态内部类不可以使用外部类的非静态成员变量
创建静态内部类的对象,不需要其外部类的对象
非静态内部类的构建:
Outer out =new Outer();//外部类
Outer.INner in= out.new.Inner();//内部类
静态内部类的形式:
OuterInner i=new Outer.Inner();