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

课后习题:练习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,使用实例初始化。

上一篇:141. Linked List Cycle (E)


下一篇:LeetCode 457. Circular Array Loop