第七章-复用类-组合语法

课后习题:练习1:创建一个简单的类,在第二个类中,将引用定义为第一个类的对象。运用惰性初始化来实例化这个对象。

我的答案:

一,个人。

 1 package com.learnJava.test;
 2
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/14
 6  **/
 7
 8 // 灶具
 9 class Cooker{
10     private String pot; // 锅
11     private String gas; // 煤气
12     Cooker(){
13         pot = "Constructed pot";
14         gas = "Constructed gas";
15     }
16
17     public String toString(){
18         return "pot = " + pot + "\n" +
19                 "gas = " + gas + "\n" ;
20     }
21 }
22 // 厨房
23 public class Kitchen {
24     private String s1 = "happy";
25     private String s2 = "happy";
26     private String s3;
27     private float s4;
28     private Cooker cooker;
29
30     public Kitchen(){
31         System.out.println("Inside Cooker");
32         s3 = "day";
33         s4 = 3.14f;
34         cooker = new Cooker();
35     }
36
37     public String toString(){
38         return "s1 = " + s1 + "\n" +
39                 "s2 = " +s2 + "\n" +
40                 "s3 = " +s3+ " \n" +
41                 "s4 =" +s4+ "\n" +
42                 "cooker= " +cooker+ "\n";
43     }
44
45     public static void main(String [] args){
46         Kitchen kitchen = new Kitchen();
47         System.out.println(kitchen);
48     }
49 }

 二,参考答案写的

 1 package com.learnJava.test;
 2
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/14
 6  **/
 7
 8 // 轮子
 9 class Cycle{
10     private String name = "Cycle";
11     public void travle(Cycle c){
12         System.out.println("Cycle ride "+ c );
13     }
14     public String toString(){
15         return this.name;
16     }
17 }
18
19 class Unicycle extends Cycle{
20
21     private String name = "Unicycle";
22
23     public String toString(){
24         return this.name;
25     }
26 }
27
28 class Bicycle extends Cycle{
29
30     private String name = "Bicycle";
31
32     public String toString(){
33         return this.name;
34     }
35 }
36
37 class Tricycle extends Cycle{
38     private String name = "Tricycle";
39
40     public String toString(){
41         return this.name;
42     }
43 }
44
45 // 骑行
46 public class Biking {
47
48     public static void ride(Cycle c){
49         c.travle(c);
50     }
51
52     public static void main(String [] args){
53
54         Unicycle u = new Unicycle();
55         Bicycle b = new Bicycle();
56         Tricycle t = new Tricycle();
57
58         ride(u);
59         ride(b);
60         ride(t);
61     }
62 }

三,总结

1,组合技术,只需要将对象引用置于新类中即可。

2,每一个非基本类型的对象都有一个toString方法,当编译器需要一个String而你只有一个对象时,自己定义的toString 方法便会被调用。

3,编译器并不是简单的为每一个引用都创建默认对象。

4,想初始化这些引用可以在 一下位置进行。

  a,在定义对象的地方,意味着总是能够在构造器被调用之前被初始化。

  b,在类的构造器中。

  c,惰性初始化,在正要使用这些对象之前使用,在生成对象不值得及不必每次都生成对象的情况下,这种方式可以减少额外的负担。

  d,使用实例初始化。

原文地址:https://www.cnblogs.com/changlili/p/11518383.html

时间: 2025-01-17 08:12:21

第七章-复用类-组合语法的相关文章

第七章-复用类-继承语法-1

练习2: 从Detergent 中 继承产生一个新的类.覆盖scrub() 并添加一个名为sterilize() 的新的方法. 一:我的答案: 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/14 6 **/ 7 class Cleanser{ 8 private String s = "Cleanser"; 9 public void append(String a) { s

第七章-复用类-继承语法-2初始化基类-带参构造器

书上代码示例: 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/14 6 **/ 7 class Game{ 8 Game(int i){ 9 System.out.println("Game constructor"); 10 } 11 } 12 13 class BoardGame extends Game{ 14 BoardGame(int i){ 15 super(i);

Thinking In Java笔记(第七章 复用类)

第七章 复用类 复用代码是Java众多引人注目的功能之一,但想要成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. Java中所有事物都是围绕着类来展开的.通过创建新类来复用代码,不必重新开头编写.此方法的窍门在于使用类而不破坏现有程序代码.本章中有两种代码重用机制来达到这一目的: 只需要在新的类中生成现有类的对象.由于新的类是由现有类的对象所组成的,这种方法通常成为组合.该方法只是复用了现有程序代码功能,而非形式上和之前的类有相似之处. 第二种方法更加细致

《JAVA编程思想》学习笔记——第七章 复用类

复用类的主要方式有两种:组合,继承 组合 例: class A {} class B {A a;} 继承 继承是所有OOP语言和Java语言不可缺少的组成部分.当创建一个类时,总是在继承,因此,除非已明确指出要从其它类中继承,否则就是在隐式地从Java的标准根类Object进行继承. 继承适用关键词:extends,继承会自动得到基类中所有的域和方法 super super关键字表示超类的意思,当前类就是从超类继承来的.调用超类方法:super.funcName(); 初始化基类 无参构造器,J

《Java编程思想》笔记 第七章 复用类

1.组合 将其他类的对象引用置于新的类中. 3.继承 关键词extends  一个类继承基类后自动获得 基类的所有域(包括字段 引用 内部类 )和方法,当然不包括private,子类中调用继承下来的方法也不需要基类对象引用.继承相当于对基类的一个扩展,因为基类有的它都有,再额外添加了一些域和方法(或覆写方法)而已. 4.super 4.1 super.f() 调用基类的f()方法. 4.2 构造器中的super(args) 调用基类构造器,且只能在第一行. 4.3 由于构造器被重载后默认构造器不

第七章-复用类-代理

练习11:(3)修改 Detergent.java,让它使用代理. 一:我的答案: 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/15 6 **/ 7 public class DetergentDelegation { 8 9 private Cleanser cleanser = new Cleanser(); 10 private String s = "Cleanser &quo

第七章服用类

7.1组合语法 在一个类中引入多个对象,以提高代码的复用性与功能. 7.2继承语法 使用继承子类可以获得,导出类可以获得基类的成员(变量与方法). 注:这里注意权限控制,若基类中的成员为默认权限,只有在同一包下才能继承得到.protect修饰时,导出类可以获取.public修饰时,任何类都可以拿到.private修饰就属于基类自己的东西了. 为了解决导出类中调用父类同名方法出现递归问题,java提出了super关键字解决这个问题. 在继承体系中,初始化都是由内向外的,即由基类到导出类扩散的,即先

Java编程思想:第7章 复用类

复用代码是Java众多引人注目的功能之一.但仅仅能复制代码并对之加以改变是不够的,还需要做更多的事情. 复用代码的两种形式: 1.组合,新类中产生现有类对象 2.继承,用现有类型创建新类型 7.1组合语法 7.2继承语法 7.2.1初始化基类 当创建了一个导出类的对象时,该对象包含了一个基类的子对象.这个子对象与你用基类直接创建的对象是一样的(Java会自动在导出类构造器里插入对基类构造器的调用,基类只含带参构造需要自己用super调用,不可省略),二者区别在于继承时基类的子对象包装在导出类对象

Java编程思想(七、复用类)

复用代码是Java众多引人注目的功能之一. 复用类有两个方法.第一种:只需在新的类中产生现有类的对象.由于新的类是由现有类的对象所组成,所以这种方法称为组合.第二种:按照现有类的类型来创建新类.无需改变现有类的形式,采用现在类的形式并在其中添加新代码.这种方式称为继承. 1.组合语法.只需将对象引用置于新类中即可.编译器并不会简单地伟每一个引用都创建默认对象.如果想要初始化这些引用,可以在代码中的下列位置进行:1).在定义对象的地方.这意味着它们总是能够在构造器被调用之前被初始化.2).在类的构