内部类的总结

一、概念

内部类就是定义在一个类里面的类,里面的类可以理解成(寄生),外部类可以理解成(宿主)。

二、内部类的使用场景、作用:

当一个事物的内部,还有一个部分需要完整的结构进行描述,而这个内部的完整的结构又只为外部事件提供服务,那么整个内部的完整结构可以选择使用内部类来设计。

三、

内部类通常可以方便访问外部类的成员,包括私有的成员。

内部类提供了更好的封装性,内部类本身就可以用 private、 proteceed 等修饰,封装性可以做更多的控制。

(一)静态内部类:

(1)有static修饰,属于外部类本身

(2)它的特点和使用与普通类是完全一样的,类有的成分他都有,只是位置在别人里面而已

public class Outer{       //静态成员内部类
  public static class Inner{
}
}      

(3)静态内部类创建对象的格式

外部类名.内部类名 对象名 = new 外部类名.内部类制造器

Outer.Inner in = new Outer.Inner();

(4)特点

使用与普通类一样,类有的成分他都有,只是位置在别人里面而已。

可以直接访问外部类的静态成员,不能直接访问外部类的实例成员。

开发中实际用的还是比较小。

(二)成员内部类

(1)无static修饰,属于外部类对象

(2)外部类名.内部类名 对象名 = new 外部类构造器.new 内部类构造器()

Outer.Inner in = new Outer().new Inner();

(3)成员内部类可以直接访问外部类静态成员(外部类的静态成员只有一份可以被共享访问)

成员内部类的实例方法可以直接访问外部类的实例成员(因为必须先有外部类对象,才能有成员内部类对象,所以可以直接访问外部类对象的实例成员)

(4)注意:在成员内部类中访问所在的外部类对象:格式:外部类名.this

(三)局部内部类

局部内部类放在方法、代码块、构造器等执行体中

局部内部类的类文件名为:外部类$内部类.class

(四)匿名内部类

(1)本质上是一个没有名字的局部内部类,定义在方法中、代码块中等

(2)作用:匿名内部类是一个没有名字的内部类

                   匿名内部类写出来会产生一个匿名内部类的对象

                   匿名内部类的对象类型相当于是当前new的那个的类型的子类类型

Employee a = new Employee(){
public void work(){
}
};
a.work();

匿名内部类可作为方法的参数进行传输

开发中不是我们主动去定义匿名内部类的,而是别人需要我们写或者我们可以写的时候才会使用。

匿名内部类的代码可以实现代码进一步简化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值