解説
オブジェクト指向では、オブジェクトを継承して、その派生物を作ることで、プログラムの新しい部品を作成します。
その際に、外部との橋渡しになる関数などは削除できません。また、追加することは可能です。そして、内部処理を変更することもできます。オブジェクト指向では、こういった仕組みを使い、開発を効率化していきます。
┏オブジェクトA━━━┓ ┃ ┣━命令1 ┃ ブラックボックス ┣━命令2 ┃ ┃ ┗━━━━━━━━━━┛ ┏オブジェクトA2━━┓ ┃ ┣━命令1 ┃ ブラックボックス ┣━命令2 ┃ 内部を改造 ┃ ┗━━━━━━━━━━┛ オブジェクトAの内部を改造した派生物を簡単に作れる ┏オブジェクトA3━━┓ ┃ ┣━命令1 ┃ ブラックボックス ┣━命令2 ┃ 命令を追加 ┣━命令3 ┗━━━━━━━━━━┛ オブジェクトAを拡張した派生物を簡単に作れる
このようにオブジェクトを継承した際、継承されたオブジェクトを親のオブジェクト、継承したオブジェクトを子のオブジェクトのように呼びます。
また、子オブジェクトは、親オブジェクトの性質(外部に公開されている関数や変数)を全て備えています。そのために、子オブジェクトは親オブジェクトの代わりに利用することが可能です。
サンプル
継承する部分を、代表的なオブジェクト指向のプログラミング言語であるJavaで簡単に書いてみます。
package com.crocro;
public class MyObject {
// データ部分
int no = 100;
// 処理部分
public void up(int addNo) {
no += addNo;
}
public int get() {
return no;
}
}
package com.crocro;
public class MyObject2 extends MyObject {
// 処理部分
public void up(int addNo) {
no *= addNo;
}
}
package com.crocro;
public class MyObject3 extends MyObject {
// 処理部分
public void reset() {
no = 100;
}
}
package com.crocro;
public class Sample {
public static void main(String[] args) {
// 2つのオブジェクトを作成
MyObject obj1 = new MyObject();
MyObject2 obj2 = new MyObject2();
MyObject3 obj3 = new MyObject3();
// 「add」を実行
obj1.up(2);
obj2.up(2);
obj3.up(2);
System.out.println("obj1 : " + obj1.get());
System.out.println("obj2 : " + obj2.get());
System.out.println("obj3 : " + obj3.get());
System.out.println("----------");
// 「reset」を実行
obj3.reset();
System.out.println("obj3 : " + obj3.get());
System.out.println("----------");
// 「obj2」と「obj3」を、「MyObject」として扱う
MyObject obj2b = obj2;
MyObject obj3b = obj3;
obj2b.up(3);
obj3b.up(3);
System.out.println("obj2 : " + obj2.get());
System.out.println("obj3 : " + obj3.get());
System.out.println("----------");
}
}
obj1 : 102 obj2 : 200 obj3 : 102 ---------- obj3 : 100 ---------- obj2 : 600 obj3 : 103 ----------
