类的高级概念之内部类

类的高级概念之类的内部类

内部类的定义
顾名思义,内部类即写在类中的类。在类的内部定义类,这种类称之为内部类。
下例是PC机为例,个人计算机是由鼠标、键盘、显示器组成。这里的monitor就是内部类

public class PC{
private String brand;//电脑的品牌
private String color;//颜色
private String size;//尺寸
private String owner;//拥有者

 class Monitor{
private String monitorsize;//显示器的尺寸
private String color;//显示器的颜色
private String resolution;//显示器的分辨率

} 


}

一篇Java文件中可以定义多种类型的类:兄弟类、成员内部类、静态内部类、局部内部类、匿名内部类。
内部类的特点
Java文件如果内部包含类多个类,产生类文件的特点:
1.Java文件中,包含了几个类,就对应产生几个相应的类文件。
2.Java文件的名称,不一定和类文件的名称保持一致,兄弟类文件的命名与普通类一致均为”类名.class”
3.一个java文件中,只允许出现一个public修饰的外部类,其他类都是defaullt.

成员内部类
类是由属性和行为组成的,而属性也称之为成员变量。成员内部类,与成员变量的地位一致,作用范围在整个外部类中。
成员内部类类文件的命名规则是“外部类 . c l a s s , M o n i t o r P C Monitor.class.
成员内部类需要先实例化外部类才可以访问内部类。
实例化内部类
内部类名 对象名=外部类.new 内部类名。上述Monitor类使用如下:

Monitor monitor=PC.new Monitor();

成员内部类内部可以使用外部类所定义的所有成员(成员变量及成员方法)

局部内部类
局部内部类,同样跟局部变量一样,不能添加访问修饰符。局部内部内无法被外部访问。并且局部内部类无法通过this关键字访问外部类的成员,因为此时的this代表的是内部类。
局部内部类类文件的命名规则是“外部类$出现次数内部类.class”

静态内部类
静态内部类是一种特殊的成员内部类,用static关键字修饰的成员内部类。
静态内部类的特点:此时内部类与对象脱离关系,直接上升为类的关系。效果等同于于类变量,类方法。

匿名内部类
匿名类部类是一种特殊的局部内部类,匿名内部类没有类的名字,也没有类的专门申明。
这种类的申明与对象的创建合为一体,看起来像是是在产生对象,但是除了产生对象,实际上它还声明了这个类。
匿名内部类是为了唯一对象而定义的一个内部类实例),可以通过外部类.this.访问

猜你喜欢

转载自blog.csdn.net/qq_38527427/article/details/82562218