内部类

内部类,在类的内部再定义类,外面的类为外部类,里面定义的类为内部类。

内部类的分类:成员内部类(和属性、方法平行,声明在类里面,方法外面)、局部内部类(声明在类的方法里)。

成员内部类:

是外部类的一个成员 可以有修饰符(4种),可以用static、final修饰

具体类的特点 可以用abstract修饰,可以在内部类的内部定义成员、方法、构造器

 1 public class TestInnerClass
 2 {
 3     public static void main(String[] args)
 4     {
 5         // 创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
 6         P.Dog dog = new P.Dog();
 7         // 创建非静态的内部类的对象,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
 8         P.Bird bird = new P().new Bird();
 9     }
10 }
11 
12 class P
13 {
14     String name;
15 
16     void show()
17     {
18 
19     }
20 
21     class Bird
22     {
23         String name;
24 
25         public void info()
26         {
27             show();
28         }
29 
30         public void setName(String name)
31         {
32             System.out.println(name);
33             System.out.println(this.name);
34             System.out.println(P.this.name);
35         }
36     }
37 
38     static class Dog
39     {
40 
41     }
42 }
43 
44 class OuterClass
45 {
46 
47     public Comparable getComparable()
48     {
49         // 常常使用一个方法,使其返回某个类或者接口的对象,而这个类或者接口在方法内部创建
50         class MyComparable implements Comparable
51         {
52 
53             @Override
54             public int compareTo(Object o)
55             {
56                 return 0;
57             }
58         }
59         return new MyComparable();
60     }
61 
62     public Comparable getComparable1()
63     {
64         // 返回匿名内部类的对象
65 
66         return new Comparable() {
67 
68             @Override
69             public int compareTo(Object o)
70             {
71                 return 0;
72             }
73         };
74     }

 

posted @ 2018-08-04 22:47  LearningKeeper  阅读(125)  评论(0)    收藏  举报