Javaの基礎12オブジェクト指向〜ポリモーフィズム

プログラミングが好きなあなたのように!
SpringBoot実用的なコースは学習https://edu.csdn.net/course/detail/31433
SpringCloud入門コースを学びhttps://edu.csdn.net/course/detail/31451を


序文

この記事では、オブジェクト指向ポリモーフィズムの3番目の重要な機能の調査を開始します。ポリモーフィズムとは何か、ポリモーフィズムの役割、プログラムでポリモーフィズムを実現する方法、および演算子とアップダウン変換のインスタンスについて学習します。

ポリモーフィズム関連の概念

ポリモーフィズムとは

ポリモーフィズムとは、物事に複数の状態があることを意味します。たとえば、水は温度の変化に応じて液体、固体、気体の3つの状態の間で変化します。さまざまな国の人々は、中国、アメリカ、インドなどに変化します。

ポリモーフィズムの役割

ポリモーフィズムは、プログラムの柔軟性とスケーラビリティを向上させます。
人生のポリモーフィズム:さまざまな国の人々は、自分の好きな食べ方を持ち、問題を柔軟に解決することができます。
ここに写真の説明を挿入
プログラムのポリモーフィズム:異なるサブクラスのオブジェクトを親クラスとして使用します。これにより、異なるサブクラスのオブジェクト間の違いを保護できます。プログラミング時に、さまざまなビジネスニーズに適応するために、より一般的で柔軟なコードを記述できます。

ポリモーフィズムの実装

ポリモーフィズムの前提

ポリモーフィズムはカプセル化と継承のメカニズムに基づいており、次の条件を満たす必要があります

  1. 子クラスは親クラスを継承します
  2. 子クラスは親クラスのメソッドをオーバーライドします
/**
 * 人类
 */
abstract class Human {
	public abstract void eat();
}
/**
 * 中国人
 */
class Chinese extends Human{
	public void eat(){
		System.out.println("中国人拿筷子吃");
	}
}
/**
 * 美国人
 */
class American extends Human{
	public void eat(){
		System.out.println("美国人拿刀叉吃");
	}
}
/**
 * 印度人
 */
class Indian extends Human{
	public void eat(){
		System.out.println("印度人拿手吃");
	}
}

ポリモーフィズム

ポリモーフィズムを実現するには、いくつかの方法があります。

  1. 子クラスの
    オブジェクトを親クラスの参照オブジェクトに割り当てて、親クラスのメソッドを呼び出します
public class HumanTest{
	public static void main(String[] args) {
		Human man1 = new Chinese();
		man1.eat();
		Human man2 = new American();
		man2.eat();
		Human man3 = new Indian();
		man3.eat();
	}
}
  1. メソッドのパラメーターを親タイプとして定義し、子オブジェクトを渡します
public static void service(Human man){
	man.eat();
}

public static void main(String[] args) {
	service(new Chinese());
	service(new American());
	service(new Indian());
}
  1. メソッドの戻り値の型を親型として定義し、子オブジェクトを返します
public static Human getHuman(int type){
	Human man = null;
	switch(type){
	case 1:
		man = new Chinese();
		break;
	case 2:
		man = new American();
		break;
	case 3:
		man = new Indian();
		break;
	}
	return man;
}

public static void main(String[] args) {
	Human man1 = getHuman(1);
	Human man2 = getHuman(2);
	Human man3 = getHuman(3);
	man1.eat();
	man2.eat();
	man3.eat();
}

ここに写真の説明を挿入

アップキャストとダウンキャスト

アップキャスト
サブクラスオブジェクトは親タイプに変換されます

Human person = new Chinese();


親クラスオブジェクトをサブクラスタイプにダウンキャストする

如:子类类型 对象= (子类类型)父类对象;

下向きの変換の前提は次のとおりです。最初の上向きの変換

//向上转型
Human  person = new Chinese();
//向下转型
Chinese ch = (Chinese)(person);
ch.eat();

注:ダウンキャスティングには、型変換エラーのリスクがあります

Human  person = new Chinese();
//出现 ClassCastException 类型转换异常
Indian ch = (Indian)(person);

instanceof演算子

instanceof role:オブジェクトが特定のタイプであるかどうかを判別する

对象 instanceof 类型
返回boolean类型结果

中国人に麻雀メソッド、アメリカ人に戦争メソッド、インド人にヨガメソッドを追加するとします。人間のオブジェクトのこの特定のメソッドを呼び出す場合は、instanceofを使用してオブジェクトタイプを決定してから、下向きの変換。

//创建对象
Human person = new Indian();
ch.eat();
//判断人的类型
if(person instanceof Chinese){
	//向下转型
	Chinese ch = (Chinese)(person);
	ch.majiang();
}else if(person instanceof American){
	American ch = (American)(person);
	ch.fight();
}else if(person instanceof Indian){
	Indian ch = (Indian)(person);
	ch.yoja();
}else{
	System.out.println("我不认识你!");
}

終わり

最後に、宿題を残して、全員の理解を確認します。

  • ナンバープレート、価格、ブランド属性を使用して、車のカテゴリを定義します。
  • 車の家賃の開始と計算の方法を定義します(レンタカー=価格/ 365 + 100、トラック=価格/ 365 + 150、バス=価格/ 365 + 200)
  • 車、トラック、バスは車を継承し、上記のアルゴリズムに従って家賃の計算方法を書き直します。
  • トラックには個別の積載方法があり、バスには個別の停止報告方法があります。
  • いくつかの車のオブジェクトを作成し、すべてのメソッドをテストします。

他のJavaの知識を学ぶ必要がある場合は、ここでJavaの概要に関する非常に詳細な知識を調べてください。

おすすめ

転載: blog.csdn.net/u013343114/article/details/112506137