抽象クラスと匿名のサブクラスのオブジェクトを作成します
パッケージabstracttest; / * *抽象クラスの匿名のサブクラス * * * / 抽象 クラス人{ 文字列名; int型年齢、 公共者(文字列名、int型年齢){ スーパー(); この .nameの= 名前; この .age = 年齢; } 公共の人物(){ スーパー(); } パブリック 抽象 ボイド(EAT); 公共の 無効徒歩(){ システム。OUT .println(" 男ウォーキング"); } } クラスの学生は、個人{延び INTのスコアを、 公共学生(){ スーパー(); } 公共の学生(文字列名、int型の年齢){ スーパー(名前、年齢); } 公共の学生(文字列名、int型の年齢、int型スコア){ スーパー(名前、年齢); この .score = スコア。 } 公共 ボイドは(食べる){ システム。アウト .println(" 学生が食べます" ); } } パブリック クラスAbstractTest { 公共の 静的な 無効メイン(文字列[] args)を{ // P-作成抽象メソッドを達成上書きするオブジェクト内で、Pと呼ばれるオブジェクトの匿名のサブクラス名のオブジェクトを 人= P- 新しい新しい(人) { @Override 公共 ボイドはEAT(){ システム。OUTの .println(" 1 " ); } }; 方法(P)であり; } パブリック 静的 ボイドメソッド(人物P){ p.eat(); p.walk()。 } }
テンプレートメソッドデザインパターン:テンプレートメソッドを呼び出すと、テンプレートメソッドが書かれたテンプレートメソッド第1の共通の部分である抽象クラスであり、その後、フックメソッドを宣言し、実装するために子クラスを聞かせて、新しいサブクラスオブジェクトは、自動的にフックメソッドを呼び出します。インクルード
TemplateMethodパッケージ変更のため、 輸入はjava.util.ArrayList; / * * *抽象クラスのアプリケーション:のテンプレートメソッドデザインパターン *概念:フックメソッド、サブクラス実装と呼ばれるフック、サブクラスがぶら下がっオブジェクト以下の抽象クラス、フックのような方法 * * * / パブリック クラスTemplateTest { 公共 静的 ボイドメイン(文字列[]引数){ サブテンプレートT = 新しい新しいサブテンプレート(); t.spendTime(); } } 抽象 クラステンプレート{ // 計算は、コード実行の一部にかかります時間 公共 無効spendTime(){ ロングスタート= にSystem.currentTimeMillis(); この。コード(); // 不确定的部分 長い端= にSystem.currentTimeMillis(); システム。アウト .println(" 花费时间为" +(エンドスタート)); } パブリック 抽象 ボイドコード(); } クラスのサブテンプレートが延びるテンプレート{ @Override 公共 ボイドコード(){ のArrayList <整数>のArrayList = 新規のArrayList <整数> (); 以下のために(INT iが= 2 ; I <= 100000 ; I ++ ) arrayList.add(I)。 システム。アウト.println(arrayList.size()); } }