2009年8月9日日曜日

インタフェースと抽象クラス

インタフェース:
http://ufcpp.net/study/csharp/oo_interface.html
問題集:
http://ufcpp.net/study/csharp/exercise.html#ex_if1

抽象クラス
http://ufcpp.net/study/csharp/oo_abstract.html

抽象クラスとインターフェイスの違い
抽象クラスとインターフェイスは、派生クラスで実装するという点で似ていますが、 次のような違いがあります。 全体に、その意味を重視して簡明にした感じでしょうか。
抽象クラスは次のように何度も継承できますが、 インターフェイスは一度しか継承できません。
abstract class ClassA {
abstract function methodA();
}

//抽象クラスを継承
class ClassB extends ClassA {
function methodA() { print("A"); }
}

//さらに継承
class ClassC extends ClassB {
function methodB() { print("B"); }
}

var c : ClassC = new ClassC();
c.methodA(); //A
c.methodB(); //B

抽象クラスは多重継承できませんが、インターフェイスは可能です。
interface IntA {
function methodA();
}

interface IntB {
function methodB();
}

//2つのインターフェイスを継承
class ClassA implements IntA, IntB {
function methodA() { print("A"); }
function methodB() { print("B"); }
}

var a : ClassA = new ClassA();
a.methodA(); //A
a.methodB(); //B

あと、抽象クラスは実装を含むことができますが、 インターフェイスは実装が一切あってはいけません。

0 件のコメント:

コメントを投稿