多様性について

JAVA

多様性について勉強します。
正直、なにがなんだかよくわかりませんが、オブジェクト指向ではよく登場するようです。

言葉の意味では、以下のような要約になります。

オブジェクト指向での多様性とは、サブクラスのインスタンスを、スーパークラスのインスタンスのように使うことといいます。

例えばこれまで書いてきた以下のようなテストコードがあるとすると、サブクラスのインスタンスを作った後に、そのインスタンスをもとに、スーパークラスの型の変数に代入することができます。

TestClassChild tcc = new TestClassChild();
TestClassParent tcp = tcc;

上記のtcpから、スーパークラスのフィールドやメソッドが呼び出すことができます。(tccも通常どおり使うことができる)
このような使い方を多様性(ポリモルフィズム)と呼ぶようです。

このあたりは実践で使ってみないとピンとこないかもしれません。

public class SuperClassTest3{

    public static void main(String[] args) {
        
        //オブジェクトのインスンタンスを生成する
        TestClassChild tcc = new TestClassChild();
       	
       	System.out.println(tcc.TestA);
       	System.out.println(tcc.TestB);
       	
       	
       	//tcc.PrintTextC();
       	//tcc.PrintTextP();

    }
}

class TestClassChild extends TestClassParent
{
    TestClassChild() {
    	//引数なしコンストラクタ用
    	
    	//スーパークラスの引数なしコンストラクタを呼ぶ
    	super();
    	
    }

    TestClassChild(int TestAA, int TestBB) {
    	
    	//スーパークラスの引数つきコンストラクタを呼ぶ
    	super(TestAA, TestBB);

    }

    void PrintTextC() {
    	System.out.print("PrintTextC !! \n");
    }
    
    void PrintTextP() {
    	System.out.print("PrintTextP オーバーライドテスト !! \n");
    }

}

class TestClassParent
{
	int TestA = 10;
	int TestB = 20;
	
    TestClassParent(int a, int b) {
        //やっていることは「setTest」メソッドを同じ
        TestA = a;
        TestB = b;
        
        System.out.print("引数つきコンストラクタ !! \n");
        
    }
	
    TestClassParent() {
    	//引数なしコンストラクタ用

        System.out.print("コンストラクタ !! \n");
    	
    }
    
    void PrintTextP() {
    	System.out.print("PrintTextP !! \n");
    }
    
    void PrintParentTest() {
    	System.out.print("PrintParentTest !! \n");
    }
    
    

}













コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です