java学习笔记---理解内部类
来源:互联网 发布:js bind 参数 编辑:程序博客网 时间:2024/06/01 10:16
(1)内部类的继承
class WithInner { class Inner { } } public class InheritInner extends WithInner.Inner { InheritInner(WithInner wi) { wi.super(); } public static void main(String[] args) { WithInner wi=new WithInner(); InheritInner ii=new InheritInner(wi); } }
可以看到,InheritInner只继承自内部类,而不是外围类。但是当要生成一个构造器时,默认的构造器并不算好,而且不能只是传递一个指向外围类对象的引用。此外,还必须在构造器中使用如下语法: enclosingClassReference.super();
这样才提供了必要的引用,然后程序才能编译通过。
(2)内部类可以被覆盖吗
如果创建了一个内部类,然后继承其外围类并重新定义此内部类时,会发生什么呢?也就是说,内部类可以被覆盖吗?实际上,内部类就好像是外围类的一个方法,其实并不起作用。
class Egg1{private York y;protected class York{public York(){System.out.println("Egg.York()");}}public Egg1(){System.out.println("New Egg()");y=new York();}}public class BigEgg extends Egg1{public class York{public York(){System.out.println("BigEgg.York()");}}public static void main(String[] args){new BigEgg();}}
结果为:
New Egg()Egg.York()
默认的构造器是编译器自动生成的,这里是调用基类的默认构造器。该例子说明,当继承了某个外围类的时候,内部类并没有什么特别神奇的变化。这两个内部类时完全独立的两个实体,各自在自己的命名空间内。
当然,明确继承某个内部类也是可以的
class Apple{public Apple(){System.out.println("Apple()");}}class Egg{protected class York{public York(){System.out.println("Egg.York()");}public void f(){System.out.println("Egg.York.f()");}}private York y=new York();private Apple a=new Apple();public Egg(){System.out.println("Egg()");}public void insertYork(York yy){y=yy;}public void g(){y.f();}}public class OverrideInnerClassTest extends Egg{private Apple a=new Apple();public class York extends Egg.York{public York(){System.out.println("BigEgg.York()");}public void f(){System.out.println("BigEgg.York.f()");}}public OverrideInnerClassTest(){insertYork(new York());}public static void main(String[] args){OverrideInnerClassTest bigEgg=new OverrideInnerClassTest();bigEgg.g();}}
结果是:
Egg.York()Apple()Egg()Apple()Egg.York()BigEgg.York()BigEgg.York.f()
此例的另一个目的也是在此熟悉,当存在继承结构时,各个构造方法的调用顺序。
- java学习笔记---理解内部类
- java学习笔记-内部类
- [学习笔记]Java内部类
- Java内部类学习笔记
- java内部类学习笔记
- java内部类学习笔记
- Java学习笔记【内部类】
- 【Java学习笔记】内部类
- java内部类学习笔记
- java内部类学习笔记
- java 内部类 学习笔记
- Java内部类学习笔记
- java内部类学习笔记
- java内部类 学习笔记
- 【Java学习笔记】内部类
- 理解 java 内部类
- Java内部类理解
- Java内部类理解
- Light OJ Substring Frequency (II)
- 学习Linux下的汇编语言
- ATTILAX项目进展表VC425
- Shell编程初接触
- 测 T 试
- java学习笔记---理解内部类
- 设计模式之"策略模式"
- Joomla Strict Standards: Non-static method JLoader::import() 解决方法
- 篮球英文术语翻译与解释 (以A至E为限)
- struts2原理-深入理解(转)
- HDACM217 area
- 关于删除下拉框选项的一个错误
- Android 4.0 external下功能库说明
- C的位运算