内部类(Java)

内部类定义:

  将一个类定义在另一个类里面,对里面那个类就称为内部类(内置类,嵌套类)

访问特点:

  1.内部类可以直接访问外部类的成员,包括私有成员;(这是内部类的最大优点)

  2.外部类要访问内部类的成员,必须要先建立内部类的对象。

一般用于类的设计:

  分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容。

  这时就是还有的事物定义成内部类来描述。

内部类的修饰符:

  1.如果内部类是静态的,相当于一个外部类;

  2.如果内部类中定义了静态成员,该静态类也必须是静态的。

为什么内部类能直接访问外部类中成员呢?

  那是因为内部类持有了外部类的引用:外部类名.this。

内部类在局部位置上只能访问局部中被final修饰的局部变量,如下例:

 1 class Outer
 2 {
 3     int num = 3;
 4     void method()
 5     {
 6         final int x = 9;
 7         class Inner
 8         {
 9             void show()
10             {
11                 System.out.println("show ..."+x);
12             }
13         }
14         Inner in = new Inner();
15         in.show();
16     }
17 }
18 
19 class InnerClassDemo3 
20 {
21     public static void main(String[] args) 
22     {
23         new Outer().method();
24     }
25 }

匿名内部类:

  就是内部类的简写格式。(其实就是一个子类对象)

  前提:内部类必须继承或者实现一个外部类或者接口。

  格式:new 父类or接口() {子类内容}

  使用场景:当函数参数是接口类型时,而且接口中的类型不超过三个,可以用匿名内部类作为实际参数进行传递。

  举例:

 1 class Outer
 2 {
 3     int num = 4;
 4     /*
 5     class Inner extends Demo //方式一
 6     {
 7         void show()
 8         {
 9             System.out.println("show ..."+num);
10         }
11     }
12     public void method()
13     {
14         new Inner().show();
15     }
16     */
17     public void method()//方式二
18     {
19         //new Inner().show();
20         new Demo()
21         {
22             void show()
23             {
24                 System.out.println("show ..."+num);
25             }
26         }.show();
27     }
28 }
29 
30 class InnerClassDemo4 
31 {
32     public static void main(String[] args) 
33     {
34         new Outer().method();
35     }
36 }

 

转载于:https://www.cnblogs.com/benon94/p/11063813.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值