Java内部类

内部类:所谓内部类就是在一个类的内部进行其他类结构的嵌套的操作。简单来说就是在类的内部又定义了一个类
根据内部类定义的位置及关键字。一共可将内部类分为4类:

1.成员内部类(普通内部类)

类比普通属性
定义:直接定义在外部类的内部不加static属性修饰
在外部类的外部直接创建成员内部类对象语法:
在这里插入图片描述
在外部类内部创建内部类对象
在外部类内部创建内部类,就像普通对象一样直接创建
Inner in = new Inner();

限制:成员内部类可访问外部类的静态属性,成员内部类不能拥有静态域(静态属性,静态方法都不行), 成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类

2.静态内部类

类比静态属性,静态方法
定义:直接定义在外部类中加static修饰
静态内部类只是包在外部类中而已,除此之外与外部类没有任何区别,不需要外部类对象

在外部类外部创建静态内部类对象语法:
在这里插入图片描述
静态内部类限制: 静态内部类的创建是不需要依赖于外围类,可以直接创建。可以拥有普通属性但不能访问外部类的普通属性

3.方法内部类

类比方法中的局部变量
定义在方法中不加任何修饰,与普通内部类基本一致只是作用域不同。

注意:(1)方法中若存在内部类方法形参隐式使用final声明,JDK8之前是显示
(2)方法内部类不能使用任何权限修饰符
(3)对外完全隐藏,除了创建这个类的方法可以访问它,其他的地方是不允许访问的。

4.匿名内部类

等同于方法内部类,只是无名,除此之外与方法内部类完全一致,但必须继承一个抽象类或实现一个接口。

  1. 匿名内部类是没有访问修饰符的。
  2. 匿名内部类必须继承一个抽象类或者实现一个接口
  3. 匿名内部类中不能存在任何静态成员或方法
  4. 匿名内部类是没有构造方法的,因为它没有类名。
  5. 与局部内部相同匿名内部类也可以引用方法形参。此形参也必须声明为 final

内部类的优点:
1.可访问彼此的私有属性(内部类可直接访问,外部类通过内部类的对象访问)
2.使用内部类可实现多继承的概念
3.内部类可以对外部类完全隐藏
内部类与外部类的关系:
对于非静态内部类,内部类的创建依赖外部类的实例对象,在没有外部类实例之前是无法创建内部类的
内部类是一个相对独立的实体,与外部类不是is-a关系
内部类可以直接访问外部类的元素(包含私有域),但是外部类不可以直接访问内部类的元素 外部类可以通过内部类引用间接访问内部类元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值