第7章 - 多重クラス - エージェント

練習11:(3)、Detergent.javaを変更し、それはプロキシを使用してみましょう。

A:私は答えます:

1つの パッケージcom.learnJava.test。
2  
3  / * *
 4  * @Author zhuchangli
 5  * @Date 2019年9月15日
 6  * * / 
7  パブリック クラスDetergentDelegation {
 8  
9      プライベートクレンザークレンザー= 新しいクレンザー()。
10      民間のString = クレンザー11      パブリック ボイドスクラブ(){
 12          cleanser.append(" Detergent.scrub()" )。
13          cleanser.scrub()。
14      }
 15  
16      公共 ボイドアペンド(列A){
 17          cleanser.append(A)。
18      }
 19  
20      公共 ボイド希釈(){
 21          cleanser.dilute()。
22      }
 23  
24      公共の ボイドは、適用(){
 25          cleanser.applay()。
26      }
 27  
28      公共 ボイドフォーム(){
 29          アペンド(" フォーム()" )。
30      }
 31  
32      公衆文字列のtoString(){
 33          リターンcleanser.toString()。
34      }
 35  
36     公共 静的 ボイドメイン(文字列[]引数){
 37          DetergentDelegationさd = 新しいDetergentDelegation()。
38          d.dilute()。
39          d.apply()。
40          d.scrub()。
41          d.foam()。
42          システム。アウト.println(D);
43          システム。アウト .println(テストの基本クラス);
44          Cleanser.main(引数)。
45  
46     }
 47 }

結果:

Cleanserdilute()applay()Detergent.scrub()スクラブ()泡()
テストの基本クラス
Cleanserdilute()applay()スクラブ()

継承を使用する場合:

1つの パッケージcom.learnJava.test。
2  
3  / ** 
4  * @Author zhuchangli
 5  * @Date 2019年9月14日
 6  * * / 
7  クラスクレンザー{
 8      プライベート文字列S = "クレンザー" 9      公共 ボイドアペンド(列A){S + = A。}
 10      公共 ボイド希釈(){( ")(希薄"付加)。}
 11      公共 ボイド applay(){( "applay()"を追加);}
 12      公共 ボイドスクラブ(){( "スクラブ()"を追加);}
 13     パブリック文字列のtoString(){ リターンS;}
 14  
15      公共 静的 ボイドメイン(文字列[]引数){
 16          クレンザーX = 新しいクレンザー()。
17          x.dilute()。
18          x.applay()。
19          x.scrub()。
20          のSystem.out.println(X)
21      }
 22  }
 23  // 洗涤剂
24の パブリック クラス洗剤が延びクレンザー{
 25      公共 ボイドスクラブ(){
 26         ( "Detergent.scrub()"を追加)。
27          スーパー.scrub();
28      }
 29  
30      // 泡泡沫
31      公共 ボイドフォーム(){追加( "フォーム()" );}
 32  
33      公共 静的 ボイドメイン(文字列[]引数){
 34          洗剤X = 新しい洗剤();
35          x.dilute()。
36          x.applay()。
37          x.scrub()。
38          x.foam()。
39          のSystem.out.println(X)
40         System.out.println( "テスト基底クラス" );
41          Cleanser.main(引数)。
42      }
 43 }

結果:

Cleanserdilute()applay()Detergent.scrub()スクラブ()泡()
テストの基本クラス
Cleanserdilute()applay()スクラブ()

2:回答

1つの パッケージcom.learnJava.test。
2  
3  / ** 
4  * @Author zhuchangli
 5  * @Date 2019年9月15日
 6  * * / 
7  
8  クラスCleanser11 {
 9      プライベート文字列S = "Cleanser11" 10      パブリック ボイドアペンド(列A){S + = A;}
 11      公共 ボイド希釈(){( "希薄()"を追加);}
 12      公共 ボイドは(適用){( ")(適用"付加);}
 13      公共 ボイドスクラブ(){( "スクラブ()"を追加);}
14      パブリック文字列のtoString(){ リターンS;}
 15  
16      公共 静的 ボイドメイン(文字列[]引数){
 17          Cleanser11 X = 新しいCleanser11()。
18          x.dilute()。
19          x.apply()。
20          x.scrub()。
21          のSystem.out.println(X)
22      }
 23  }
 24  
25  パブリック クラスDetergentDelegation11 {
 26  
27      民間のString = "DetergentDelegation11" 28      プライベートCleanser11 C11 = 新しいCleanser11();
29  
30      公共 ボイドアペンド(列A){
 31の          S + = A。
32      }
 33  
34      公共 ボイド希釈(){
 35          c11.dilute()。
36      }
 37  
38      公共 ボイドは}; c11.apply()){(適用
 39  
40      公共 ボイドスクラブ(){
 41          アペンド( "DetergentDelegation11を" )。
42          c11.scrub()。
43      }
 44  
45      公衆 ボイドフォーム(){
 46          アペンド( "フォーム()" )。
47      }
 48  
49      公共の文字列のtoString(){
 50          リターン S + "" + C11。
51      }
 52  
53      公共 静的 ボイドメイン(文字列[]引数){
 54          DetergentDelegation11 D = 新しいDetergentDelegation11()。
55          d.dilute()。
56          d.apply()。
57          d.scrub()。
58          d.foam()。
59          のSystem.out.println(D)。
60         System.out.println( "テスト基底クラス" );
61          Cleanser11.main(引数)。
62      }
 63  
64  
65 }

結果:

DetergentDelegation11 DetergentDelegation11フォーム()Cleanser11は(希薄)スクラブ())(適用
試験基本クラス
(Cleanser11希())(スクラブを適用)

要約:

何代理店です。

クラス内に配置されるように構成された部材は、この方法は、新しいクラスのすべてのメンバーオブジェクトを公開します。

これは、オブジェクトのメソッド内のメンバーのサブセットのみを提供します。

 

おすすめ

転載: www.cnblogs.com/changlili/p/11525016.html