既然这么险恶的环境等着我,那我只好变得更强了。|

理暗

园龄:2年9个月粉丝:1关注:0

N种内部类

内部类

内部类就是在一个类的内部定义一个类,比如A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。

1.成员内部类

通过外部类来实例化内部类,内部类可以获得外部类的(私有)属性和方法

2.静态内部类

通过外部类来实例化内部类,内部类可以获得外部类的静态的属性和方法

3.局部内部类

方法中定义的类就是局部内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//外部类
public class Outer {
 
    private int id = 10;
    private static int id2 = 10;
    public void out(){
        System.out.println("这是外部类的方法!");
    }
 
    //成员内部类
    public class Inner{
        public void in(){
            System.out.println("这是内部类的方法!");
        }
 
        //获得外部类的私有属性
        public void getID(){
            System.out.println(id);
        }
 
        //获得外部类的方法
        public void getout(){
            out();
        }
 
    }
 
    //静态内部类
    public static class Inner2{
        public void in(){
            System.out.println("这是内部类的方法!");
        }
 
        //获得外部类的私有属性
        public void getID(){
            System.out.println(id2);
        }
 
        //获得外部类的方法
        public void getout(){
           // out();
        }
 
    }
 
    public void method(){
        //局部内部类
        class Inner3{
 
        }
    }
 
}
 
//一个java类中可以有多个class类,但是只能有一个public class类
class A{
 
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Application {
 
    public static void main(String[] args) {
        //new
        Outer outer = new Outer();
 
        //通过外部类来实例化内部类
        Outer.Inner inner = outer.new Inner();
        inner.in();
        inner.getID();
 
    }
 
}

 

4.匿名内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Test {
    public static void main(String[] args) {
        //匿名内部类
        //没有名字初始化类,不用将实例保存到变量中
        new Apple().eat();
 
        //匿名内部类
        new UserService(){
 
            @Override
            public void hello() {
 
            }
        };
    }
}
 
class Apple{
    public void eat(){
        System.out.println("1");
    }
}
 
interface UserService{
    void hello();
}

 

增加知识点:一个java类中可以有多个class类,但是只能有一个public class类

本文作者:Li-An

本文链接:https://www.cnblogs.com/Li-An/p/16417892.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   理暗  阅读(21)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起