《内部类》

内部类

1.本地内部类

注 : 用的 少

本地内部类 : 定义在方法当中 的 类

public class Main {

    public void func() {
        class Test{
            public int a;
        }
        //缺点 : 只能 在当前方法 中使用,
        // 想想 要这个 类 有啥用 只能在这个 方法中使用。。
    }
    public static void main(String[] args) {

    }
}

2.实例内部类

定义一个类 ,实例内部类定义在这个类中,这个类 跟成员变量和 方法属于 同级

]

注意事项:

在实例内部类中不能 定义 一个静态的成员变量!

这里 非要定义 只能定义 一个 静态常量

在这里插入图片描述
加上 final 就不会报错 ,这里 就属于常量 了 ,常量是在程序编译的时候 确定的, 一旦 初始化 就不能进行 修
改了。

实例化内部类的对象

类他就有对象,那么 我们如何来实例化实例内部类的对象呢?

外部类名.内部类名 变量名 = 外部类对象的引用.new 内部类

在这里插入图片描述

继承内部类

在这里插入图片描述

访问同名 变量

查看字节码文件
在这里插入图片描述

实例内部类当中,包含了 和 外部类同名的 成员变量,如何 在实例内部类当中 访问?
在这里插入图片描述

【注意事项】

  1. 外部类中的任何成员都可以在实例内部类方法中直接访问

  2. 实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束

  3. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名
    称.this.同名成员 来访问

  4. 实例内部类对象必须在先有外部类对象前提下才能创建

  5. 实例内部类的非静态方法中包含了一个指向外部类对象的引用

  6. 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。

静态内部类

这里与实例内部类的 区别,是在 实例内部类 前加了一个static 修饰

实例化静态内部类 对象

在这里插入图片描述

访问外部类的普通的成员变量

在这里插入图片描述
这里 我们 对比 一下 实例内部类 和 静态内部类,你们觉得 那个 更好一点呢,这里 因该是 静态内部类,因为,实例化静态内部类对象的时候可以不需要外部类的 对象。
在这里插入图片描述

匿名内部类

在这里插入图片描述
在这里插入图片描述

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值