ポリモーフィック!

ポリモーフィズム

多状態を達成するためにどのようにJavaの?多型を使用する利点?

参照変数の二つのタイプ:
コンパイル時の型(少しファジー、通常は親)
 公共のボイド(ペットPET);
型宣言によって決まります。
ランタイム型(実行、サブクラス、特にサブクラス)
実際の対応するオブジェクトのタイプによって決定されます。

複数の状態が3つの必要な条件を持っているがあります。


私たちは、サブクラスのオブジェクトに親クラスの基準点をオーバーライドする方法を有することは、継承されてきました

なぜ書き換え?

サブクラスのメソッドを呼び出す親オブジェクトを使用して、特定のサブクラスオブジェクトの親クラスの基準点、

メソッド呼び出しを書き換えなければなりません。

 

なぜ多型(カプセル化と継承)

1.多形は、
プログラムの拡張性と保守性を改善しましたか?

コードの再利用性を向上させる
2.パッケージ
のセキュリティの
増加コード再利用
3.継承は、
コードの再利用性を向上させます

の多形型の2種類の

親クラスのメソッドなどのパラメータ1

パブリック戻り型メソッド名(オブジェクト名親型){ 
} 
公共ボイド飼料(ペットPET){ 
}

 親クラスのメソッドとして2.(また、工場設計パターンと呼ぶ)の値を返します

方法として親クラス値型返し
	公共getPet PET(int型の){ 
//ペット被写体宣言
	ペットペット= NULL; 
	スイッチ(タイプ){ 
	ケース1:
//参照オブジェクト点サブクラス親クラス
	ペット=新しい犬( "カイ" 2,60 "ゴールデン"); 
	BREAK; 
	}

次のコード:(特定のアプリケーションや構成はセッターを取得、セットを省略しています)

パブリッククラスのCa tはペット{延び
	プライベート文字列の色を、

	@Override 
	公共ボイド{)(食べる
		のSystem.out.printlnを( "猫在吃鱼")。
	} 

	@Override 
	公共ボイド樹皮(){ 
		System.out.printlnは( "苗苗ミャオ")。
	} 

	
}

 

パブリッククラス犬はペット{拡張
	プライベート文字列のブランドを、
	
	@Override 
	公共ボイド{)(食べる
		のSystem.out.printlnを( "狗在吃骨头")。
	} 

	@Override 
	公共ボイド樹皮(){ 
		のSystem.out.printlnは( "ウォンウォンを獲得しました")。
	} 

	
}

 

パブリック抽象クラスのペット{ 
	プライベート文字列名; 
	プライベートint型の年齢; 
	プライベートint型の愛。
	プライベートint型健康。

	パブリック抽象ボイド)(食べます。
	パブリック抽象ボイド樹皮(); 

	

}

 次のように色多型フィールドの二種類が使用され

Personクラス{パブリック
	/ ** 
	 *ペット採用方式
	 *タイプ親クラス・メソッドのタイプが値を返すよう
	 * @return 
	 * / 	パブリックgetPetペット(){ 
		スキャナスキャナ新しい新しいINPUT =(System.in); 
		のSystem.out.println ( "ペットの養子縁組の要求タイプ1、2匹、3匹の猫、豚を入力してください"); 
		int型= input.nextInt(); 
		ペットPET = NULL; 
		IF(タイプ== 1){ 
			PET =新しい新しい犬を() ; 
		}そうでなければ(タイプ== 2){IF 
			PET =新しい新しい猫(); 
		} {他
			PET =新しい新しいブタ(); 
		} 
		PETを返す; 
	} 公共ボイド飼料(ペットPET){ 
		pet.eat(); 
	} 
}

		
	
	

 

パブリッククラスTest { 
	パブリック静的な無効メイン(文字列[] args){ 
		人の暁=新しい人()。
		ペットペット= xiaoming.getPet(); 
		System.out.println(ペット); 
		
		xiaoming.feed(ペット); 
		
	} 
}

 クラスは、その豚の多型のスケーラビリティを見ることができます


 



豚はペットクラスを拡張{パブリック

	@Override 
	公共ボイドは{)(EAT 
		;のSystem.out.printlnを( "ブタはキャベツを食べる")
	} 

	@Override 
	公共ボイド樹皮(){ 
		System.out.printlnは( "ヘンハム"); 
	} 

}

 


 

おすすめ

転載: www.cnblogs.com/hsh5201314/p/11610440.html