JAVA

多様性について

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

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

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

例えばこれまで書いてきた以下のようなテストコードがあるとすると、サブクラスのインスタンスを作った後に、そのインスタンスをもとに、スーパークラスの型の変数に代入することができます。
[c]
TestClassChild tcc = new TestClassChild();
TestClassParent tcp = tcc;
[/c]

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

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

[c]
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");
}

}

[/c]

コメントを残す

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