final 修飾子
更新 : 2007 年 11 月
拡張できないクラス、またはオーバーライドできないメソッドまたはプロパティを宣言します。
final statement
引数
- statement
必ず指定します。クラス、メソッド、またはプロパティの定義。
解説
final 修飾子は、拡張できないクラス、またはオーバーライドできないメソッドやプロパティであることを示すために使用します。これにより、重要な関数がほかの関数によってオーバーライドされることはなくなり、クラスの動作は維持されます。final 修飾子を指定したメソッドは、派生クラスのメソッドによって隠ぺいまたはオーバーロードされる場合があります。
final 修飾子は、クラスのメソッドとプロパティ、およびクラスに指定できます。インターフェイス、フィールド、およびインターフェイスのメンバには、final 修飾子を使用できません。
final 修飾子は、ほかの継承の修飾子 (abstract) と共に使用することはできません。既定では、クラスのメンバは abstract と final のどちらでもありません。継承の修飾子は、static 修飾子と共に使用することはできません。
使用例
次のコードは、final 修飾子の使用例です。final 修飾子は、基本クラスのメソッドが派生クラスのメソッドによってオーバーライドされることを防ぎます。
class CBase {
final function methodA() { print("Final methodA of CBase.") };
function methodB() { print("Non-final methodB of CBase.") };
}
class CDerived extends CBase {
function methodA() { print("methodA of CDerived.") };
function methodB() { print("methodB of CDerived.") };
}
var baseInstance : CBase = new CDerived;
baseInstance.methodA();
baseInstance.methodB();
このプログラムの出力は、final メソッドがオーバーライドされていないことを示しています。
Final methodA of CBase.
methodB of CDerived.