練習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希())(スクラブを適用)
要約:
何代理店です。
クラス内に配置されるように構成された部材は、この方法は、新しいクラスのすべてのメンバーオブジェクトを公開します。
これは、オブジェクトのメソッド内のメンバーのサブセットのみを提供します。