计算机二级Java语言入门(十八)
树图思维导图提供 计算机二级Java语言入门(十八) 在线思维导图免费制作,点击“编辑”按钮,可对 计算机二级Java语言入门(十八) 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:6a20f8e4641a2e6710fc4ba73057c20d
计算机二级Java语言入门(十八)思维导图模板大纲
内部类是指在一个外部类的内部再定义一个类
内部类作为外部类的一个成员,并且依附于外部类而存在的
内部类可为静态,可用PROTECTED和PRIVATE修饰
部类只能使用PUBLIC和DEFAULT)
成员内部类
作为外部类的一个成员存在,与外部类的属性、方法并列
内部类和外部类的实例变量可以共存
在内部类中访问实例变量:this.属性
在内部类访问外部类的实例变量:外部类名.this.属性
成员内部类的优点
内部类作为外部类的成员,可以访问外部类的私有成员或属性
用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限
注意
内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类
对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类
建立内部类对象时应注意
外部类的内部可以直接使用inner s=new inner();
而在外部类的外部,要生成(new)一个内部类对象,需要首先建立一个外部类对象(外部类可用),然后在生成一个内部类对象
Outer.Inner in=Outer.new.Inner()
错误的定义方式
Outer.Inner in=new Outer.Inner()
注意
当Outer是一个private类时,外部类对于其外部访问是私有的,所以就无法建立外部类对象,进而也无法建立内部类对象
局部内部类
在方法中定义的内部类称为局部内部类
局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块
注意
局部内部类不仅可以访问外部类实例变量,还可以访问外部类的局部变量
静态内部类
静态内部类定义在类中,任何方法外,用static定义
静态内部类只能访问外部类的静态成员
生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别
静态内部类的对象可以直接生成
Outer.Inner in=new Outer.Inner();
不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类
静态内部类不可用private来进行定义
对于两个类,拥有相同的方法
People { run(); } Machine{ run(); } 此时有一个robot类: class Robot extends People implement Machine. 此时run()不可直接实现。
注意
当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现
用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承
树图思维导图提供 计算机二级Java语言入门(二十一) 在线思维导图免费制作,点击“编辑”按钮,可对 计算机二级Java语言入门(二十一) 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:c32f739dbed5eb20f33876e62b0d33a5
树图思维导图提供 计算机二级Java语言入门(二十) 在线思维导图免费制作,点击“编辑”按钮,可对 计算机二级Java语言入门(二十) 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:cf10cbf2649d25ff4c6a7de398208170