内部类和匿名内部类

在类内部也可以定义另一个类。如果在类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
原文地址:https://www.cnblogs.com/cosmosray/p/7461490.html