复杂类继承体系结构下,实际的类定义
来源:互联网 发布:淘宝装修队模板免费 编辑:程序博客网 时间:2024/06/07 15:13
一、概念
在“ 复杂的类继承体系结构和类资源名称冲突解决”中介绍了复杂的类继承体系结构。又由“《Java编程思想》第六章 访问权限控制”可知,在继承过程中,子类会隐式复制父类中可被继承的类资源,从而得到扩展后的子类的实际类定义。那么在复杂的类继承体系中,实际的类定义又有怎样的特点呢?
在复杂的类继承体系中,根据最终子类的实际类定义,可以得到一个跟类继承体系结构类似的该子类中的类资源层次结构,其中父类中不可被继承的类资源被排除在外。
二、例子
2.1、例子1
假如现在有一个“C.java”文件,文件内容如下所示:
public class C extends B implements IIIA, IIIB { int a = 90;}abstract class A { int a = 10;}class B extends A { int a = 20;}interface IA { int a = 30;}interface IIA { int a = 40;}interface IIIA extends IA, IIA { int a = 50;}interface IB { int a = 60;}interface IIB { int a = 70;}interface IIIB extends IB, IIB { int a = 80;}
那么其中包含的类继承体系结构如图1所示。根据类C的实际类定义,可得到类C的数据成员类资源层次结构如图2所示。
图1
图2
2.2、例子2
修改上述“C.java”文件,修改后内容如下:
public class C extends B implements IIIA, IIIB { public int f() { return 10; }}abstract class A { abstract int f();}class B extends A { int f() { return 10; }}interface IA { int f();}interface IIA { int f();}interface IIIA extends IA, IIA {}interface IB { int f();}interface IIB { int f();}interface IIIB extends IB, IIB {}
上述代码包含的类继承体系结构跟图1一致。此时根据类C的实际类定义,可得到类C的方法类资源层次结构如图3所示。
图3
2.3、例子3
再修改上述“C.java”文件,修改后内容如下:
public class C extends B implements IIIA, IIIB { int a = 90; public int f() { return 10; }}abstract class A { int a = 10; private int f() { return 10; }}class B extends A { private int a = 20; private int f() { return 10; }}interface IA { int a = 30; int f();}interface IIA { int a = 40; int f();}interface IIIA extends IA, IIA { int a = 50;}interface IB { int a = 60; int f();}interface IIB { int a = 70; int f();}interface IIIB extends IB, IIB { int a = 80;}
上述代码包含的类继承体系结构跟图1一致。此时根据类C的实际类定义,可得到类C的数据成员和方法类资源层次结构如图4所示。
图4
0 0
- 复杂类继承体系结构下,实际的类定义
- 复杂的类继承体系结构和类资源名称冲突解决
- 类的定义与继承
- 定义类 用到继承的
- java中继承Thread类的实际编码应用
- ReportStudio入门教程(十二) - 列表的复杂表头之继承类
- Javascript中类的定义和继承
- C++定义不能被继承的类
- javascript的类定义和基本继承
- 继承 类的重复定义问题
- C++定义不能被继承的类
- JavaScript的类定义与继承
- 定义一个不能被继承的类
- prototype的类定义与继承
- Scala类的继承,抽象类定义,接口定义
- 继承:层次化实现复杂类
- JavaMail的体系结构及发送复杂邮件
- C++下类的继承
- Android增强的LinearLayout,带分隔线
- Android_YouthArea之ApeendTextView
- struts接收url文件使用upload.parseRequest 获取文件为空的问题
- QT中结合实际例子谈谈QTableWidget中布局控件的方法
- Android App catch Exception
- 复杂类继承体系结构下,实际的类定义
- 一些显著性检测的数据库资料
- 内部类的使用
- Eclipse使用Maven插件创建Web项目时出错:Could not resolve archetype org.apache.maven.archetypes
- UI基础整理-12
- 宏定义DeBug
- [C++] 多态性与虚函数
- eclipse的优势对比vi、npp等代码编辑软件
- 《剑指offer》——数字在排序数组中出现的次数