abstract 修飾子
更新 : 2007 年 11 月
クラスの拡張が必要であること、またはメソッドやプロパティの実装が派生クラスで提供される必要があることを宣言します。
abstract statement
引数
- statement
必ず指定します。クラス、メソッド、またはプロパティの定義。
解説
abstract 修飾子は、実装を持たないクラスのメソッドまたはプロパティ、またはこれらのメソッドを含むクラスに対して使用します。抽象メンバを持つクラスは、new 演算子ではインスタンス化できません。抽象基本クラスから、抽象クラスおよび非抽象クラスの両方を派生できます。
abstract 修飾子は、クラスのメソッドとプロパティ、およびクラスに指定できます。abstract メンバを含むクラスには、abstract 修飾子を指定する必要があります。インターフェイスとそのメンバは暗黙的に抽象であり、abstract 修飾子を使用できません。フィールドには abstract を指定できません。
abstract 修飾子は、ほかの継承の修飾子 (final) と共に使用することはできません。既定では、クラスのメンバは abstract と final のどちらでもありません。継承の修飾子は、static 修飾子と共に使用することはできません。
使用例
次のコードは、abstract 修飾子の使用例です。
// CAnimal is an abstract base class.
abstract class CAnimal {
abstract function printQualities();
}
// CDog and CKangaroo are derived classes of CAnimal.
class CDog extends CAnimal {
function printQualities() {
print("A dog has four legs.");
}
}
class CKangaroo extends CAnimal {
function printQualities() {
print("A kangaroo has a pouch.");
}
}
// Define animal of type CAnimal.
var animal : CAnimal;
animal = new CDog;
// animal uses printQualities from CDog.
animal.printQualities();
animal = new CKangaroo;
// animal uses printQualities from CKangaroo.
animal.printQualities();
このプログラムの出力は次のようになります。
A dog has four legs.
A kangaroo has a pouch.