在类内部也可以定义另一个类。如果在类Outer的内部在定义一个类Inner,鄙视类Inner就成为内部类,而类Outer则成为外部类。
java内部类分为四种:
成员内部类,局部内部类,静态内部类和匿名内部类
1)成员内部类:作为外部类的一个成员方存在,与外部类的属性、方法并列。注意:成员内部类中不能定义静态变量,但是可以访问外部类的所有成员。
2)局部内部类:即在方法中定义的内部类,与局部变量类似,在局部内部类前不加修饰符public 或 private,其范围为定义他的代码块。注意:局部内部类中不可以定义静态变量,可以访问外部类的局部变量(及方法内的变量),但是变量必须是final的。
3)静态内部类: 静态内部类定义在类中,任何方法外,用static定义。注意:静态内部类中可以定义静态或者非静态的成员
4)匿名内部类:匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。
就是内部类的简化写法。
前提是存在一个类或者接口
格式 new 类名或者接口名(){重写方法}
本质:是一个继承了类或者实现了接口的子类匿名对象
1 public class Outer {
2 public int id=20170901;
3 public String name="honor";
4
5 class Inner {
6 public String name="华为";
7 public String address="枫杨路18号";
8 public void showInner(){
9 Outer pho=new Outer();
10 System.out.println("内部类方法输出:"+name+" "+address+" "+pho.id+" "+pho.name);
11 }
12 }
13
14 public void showOuter(){
15 System.out.println("外部类方法输出:"+id+" "+name);
16 }
17 public static void main(String[] args){
18 //外部类实例化对象
19 Outer ph=new Outer();
20
21 Outer.Inner man=ph.new Inner(); //外部类中实例化内部类对象
22 man.showInner();
23 ph.showOuter();
24
25 System.out.println("主方法中输出:"+" "+ph.id+" "+ph.name+" "+man.name+" "+man.address);
26 }
27 }
View Code
CosmosRay | ||
| | |