Java编程思想第四版第七章学习(1)——基类初始化
来源:互联网 发布:php接收post json 编辑:程序博客网 时间:2024/06/06 03:08
复用类有两种方法,如下所示。
1、第一种方法:在新类产生现有类的对象,称为组合,该方法是复用了现有程序代码的
功能,而不是它的形式。
编译器不会为每一个引用都创建默认对象,如果要初始化这些引用,可以有如下四种方
法:
(1)在定义对象的地方,即意味着它们总是能够在构造器被调用前被初始化。
(2)在类的构造器中。
(3)就在正要使用这些对象之前。(惰性初始化)
(4)使用实例初始化。
2、第二种方法:按照现有类的类型来创建新类,无需改变现有类的形式,采用现有类的形
式并在其中添加新代码,即继承。
(1)父类被称为基类,子类被称为导出类。当创建一个导出类的对象时,该对象包含了
一个基类的子对象,这个子对象和你用基类直接创建的对象时一样的,只不过后者来自
于外部,而基类的子对象被包装在导出类的对象内部。
(2)基类子对象的正确初始化:Java会自动在导出类的构造器中插入对基类构造器的调
用,当有多层时,构建过程是从基类“向外”扩散的。因此基类在导出类构造器可以访问
它之前就完成了初始化。
(3)如果没有默认的基类构造器,或者想调用一个带参数的基类构造器,就必须用关键
字super显式地编写调用基类构造器的语句,并匹配适当的参数列表。
为了验证super的作用,我们完成了如下小练习。
/* * 题目: * 创建类A和类B,使A和B有带参数的构造器,从A中继承产生一个名为C的新类,并在C内创建一个B类的成员。 * 为C写一个构造器,并在其中执行所有的初始化。 */class A { public A (int i, double y) {//是C的基类,有带参构造器 System.out.println("Constrcution A"); System.out.println("i= " + i); System.out.println("y= " + y); }}class B { public B (int j) { System.out.println("Construction B"); System.out.println("j= " + j); }}class C extends A { public C(int i, double y) { super(2, 3.9);//需要用super显式地调用基类构造器 B b = new B(2); System.out.println("Construction C"); } }public class Jicheng { public static void main(String[] args) { // TODO Auto-generated method stub C c = new C(2,3.9); }}/*Output:Constrcution Ai= 2y= 3.9Construction Bj= 2Construction C*///
另外做小练习。
/* * 题目: * 练习八:创建一个基类,它仅有一个非默认构造器;在创建一个导出类,它带有默认构造器和非默认构造器。 * 在导出类的构造器中调用基类的构造器。 */class Basic { public Basic (String s){ System.out.println("This is the Basic Construction"); System.out.println("s= " + s); }}class BasicTwo extends Basic { public BasicTwo () {//BasicTwo的默认构造器 super("nihao"); System.out.println("This is the first Construction"); }; public BasicTwo(String s1, int i){//BasicTwo的非默认构造器 super(s1); System.out.println("s1= " + s1 + ", i= " + i); System.out.println("This is the second Construction"); }}public class Practice8_07 { public static void main(String[] args) { // TODO Auto-generated method stub BasicTwo basic1 = new BasicTwo(); System.out.println(); BasicTwo basic2 = new BasicTwo("example two",520); }}/*OutputThis is the Basic Constructions= nihaoThis is the first ConstructionThis is the Basic Constructions= example twos1= example two, i= 520This is the second Construction*///
1 0
- Java编程思想第四版第七章学习(1)——基类初始化
- Java编程思想第四版第七章学习(2)
- Java编程思想第四版第五章学习 ——构造器确保初始化
- java编程思想(第四版)第七章
- Java编程思想第四版读书笔记——第七章 复用类
- JAVA编程思想学习 --- 第四章 (初始化和清除)
- Java编程思想第四版*第七章*个人练习
- java编程思想 第四版 第七章读书笔记
- Java编程思想第四版第七章练习
- Java编程思想第四版第十二章学习——通过异常处理错误(1)
- Java编程思想第四版读书笔记——第五章 初始化与清理
- JAVA编程思想学习总结:第七章——复用类
- Java 编程思想(第四版)学习笔记(5)初始化与清理
- 《JAVA编程思想》第四版学习 需要我记住的something --初始化和清除(一)
- 《JAVA编程思想》第四版学习 需要我记住的something --初始化和清除 (二)
- Java编程思想第四版第十章学习——内部类(1)
- Java编程思想第四版第十章学习——内部类(2)
- Java编程思想第四版第十二章学习——通过异常处理错误(2)
- 简述NotificationCenter、KVC、KVO、Delegate?并说明它们之间的区别?
- Android实现crontab
- Jquery “回到顶部”
- Sort Colors
- HDU-3189-Just Do It【分解质因数】
- Java编程思想第四版第七章学习(1)——基类初始化
- android 中BroadcastReceiver 深入理解
- Resources和 AssetBundle 的区别
- Ubuntu无法更新的问题
- JS与iOS交互之OC获取JS内容跳转到指定控制器实现技巧
- jquery validator扩展
- 访问对话框的七种方法(下)
- IE8中往数组放值的问题
- 狼主小磊