内部类的继承:
class Outer {
privateinta;
public Outer(int a) {
this.a = a;
}
class Inner {//内部类
public Inner() {
}
publicvoid print() {
System.out.println("a=" + a);
}
}
//内部继承
class InnerSub extends Inner {
}
}
publicclass Testman extends Outer.Inner {
// public Testman(){}//编译错误 java虚拟机无法决定让Testman实例引用哪个Outer实例。
// 通过传递Outer实例的引用然后在构造方法中调用super语句来建立外部类和内部类之间的关联关系
public Testman(Outer o) {
o.super();
}
publicstaticvoid main(String[] args) {
Outer o1 = new Outer(1);
Outer o2 = new Outer(2);
// in变量引用的inner实例会自动引用o1变量引用的实例。
Outer.Inner in = o1.new Inner();
in.print();
Testman t1 = new Testman(o1);
t1.print();// print 1
Testman t2 = new Testman(o2);
t2.print(); // print 2
}
}
在直接构造实例内部类的实例的时候 java虚拟机会自动使用内部类实例引用它的外部内实例。
子类和父类中的内部类同名的问题:
内部类并不存在覆盖的概念,假如子类和父类中存在同名的内部类,那么这个内部类也会分别在不同的名字空间中,因此不会发生冲突。Outers.Inner 和SubOuter.Inner类是独立的两个类。不存在覆盖关系。Java编译器不会检查子类中的Inner类是否缩小了父类中的Inner类的访问权限。
class Outers {
Inner in;
public Outers() {
in = new Inner();// 构造内部类实例
}
publicclass Inner { // public访问级别
public Inner() {
System.out.println("inner of Outer");
}
}
}
publicclass SubOuter extends Outers {
class Inner {
public Inner() {
System.out.println("inner of SubOuter");
}
}
publicstaticvoid main(String[] args) {
//执行 new SubOuter()会调用父类的构造方法
SubOuter.Inner subOuter= new SubOuter().new Inner();
Outers.Inner outer = new Outers().new Inner();
}
}
相关推荐
是个很麻烦,很纠结的问题 内部类基本语法 内部类继承 子类与父类的内部类同名 匿名类 内部接口及接口中的内部类 内部类的类文件 为什么需要内部类--内部类用途
【IT十八掌徐培成】Java基础第06天-03.多态-类多态-接口多态-同名属性问题.zip
C++规定与类同名的函数就是拷贝构造函数 默认拷贝构造函数 在类定义中如果没有提供自己的拷贝构造函数,则C++提供一个默认的构造函数,其拷贝策略是逐个成员依次拷贝。 深拷贝和浅拷贝 默认拷贝构造函数均是浅拷贝 ...
1:掌握单继承和多继承下派生类的定义方法,理解基类成员在不同的继承方式下不同的访问属性。 2:正确定义派生类的构造函数与析构函数,理解定义一个派生类对象时构造函数、析构函数的调用次序。 3:理解同名冲突的...
Java,面向对象编程的第二站--多态和继承,包含一个实验报告word文档(内包括体会和程序简介)和一个源代码压缩包(在Myeclipse 6.0下编译通过)
day11_10_内部类的同名变量访问
(3) 使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类),教师教师工资由基本工资+级别工资+工龄工资+课时工资构成;工人工资由基本工资+级别工资+工龄工资+奖励工资构成 (4) 编写同名...
JAVA基础知识精华总结 收藏 1、 对象的初始化 (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在...
行业分类-电子-关于三相电机同名端检测仪的说明分析.rar
再定义一个助教类TA,继承学生类和教师类,该类可以使用学生类的全部数据成员,以及教师类的课程和周学时数的数据成员。要求:每个类提供自定义的构造函数和析构函数,并通过同名函数ShowInfo来显示全部数据成员的值...
3dmax插件神器-008-合并同名材.mse
还在为一大堆汇总文件的重复发愁么,快试试无双-硬盘同名文件清理吧!
以Employee类为虚基类派生出Manager,Technician和Salesman类;再进一步派生出Developermanager和Salesmanager类。 Employee类的属性包括姓名、职工号、工资级别,月薪(实发基本工资加业绩工资)。操作包括月薪计算...
多个类注解@XStreamAlias,value相同、且在集合上使用了@XStreamImplicit会出现异常: com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- ...
多继承可以看作是单继承的扩展。所谓多继承是指派生类具有多个基类,派生类..本文将对C++多继承同名隐藏实例进行分析
Java继承时构造函数的调用, java面向对象特征: 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题
文件夹同名病毒专杀 文件夹同名病毒专杀--文件夹后缀加.exe病毒专杀 我在网上收集整理的
第1章 1、Java三大平台: Java ME 、Java SE (JDK)、Java EE 2、平台无关性 ...2. 类定义的基本语法:定义一个类实现指定的功能,写一个主方法测试该类的功能 (设计自定义异常类,throw、catch异常)
(1) 使用继承的方法构造3个类(如人员类---基类,普通学生类和管理员类----派生类)使用相应的对象放置相应信息 (2) 编写同名的display()成员函数,用来输出相应的内容 (3) 录入学生信息并保存 (4) 按不同类别输出...