AS3覚え書き2 :クラス

package

パッケージを読み込むには次のようにimport文を用います。

import package名.クラス名 
import package名.*       //指定したpackage内の全てのクラスを読み込む

クラスの定義

クラスおよびメンバ変数とメソッドの定義は次のようにpackageの中に記述します。

package  
{
	public class Shape
	{
		private var color:String;
		public function draw():void {
			//statement
		}
	}
}
コンストラク

初期化のためのコンストラクタの書式は、public function クラス名(引数)となります。

package  
{
	public class Circle
	{
		private var color:String;
		private var radius:int;
		public function Circle(radius:int,color:String)
		{
			this.color = color;
			this.radius = radius;
		}
	}
}
クラスのインスタンス

インスタンスを生成するにはnewを使います。

var obj:Circle = new Circle(4,"red");
obj.draw();

静的メンバの定義

staticによってクラスのまま利用できる変数とメソッドを定義することができます。

package  
{
	public class Circle
	{
		public static var color:String;
		public static var radius:int;
		public static const SIZE:Number = 3;
		//constructor
		public static function draw():void {
			//statement
		}
	}
}
静的メンバの利用
var i:int = Circle.radius;
Circle.draw();

継承

継承にはextendsを利用します。

基底クラス
package  
{
	public class Shape
	{
		protected var color:String;
	}
}
派生クラス
package  
{
	public class Circle extends Shape
	{
		private var radius:int;
	}
}

基底クラスの初期化

派生クラスのコンストラクタ内で基底クラスを初期化する場合はsuperを呼び出します。

基底クラス
package  
{
	public class Shape
	{
		private var color:String;
		public function Circle(color:String)
		{
			this.color = color;
		}
	}
}
super文
package  
{
	public class Circle extends Shape
	{
		private var radius:int;
		public function Circle(radius:int,color:String)
		{
			this.radius = radius;
			super(color);
		}
	}
}

メソッドのオーバーライド

派生クラスのメソッドの先頭にoverrideを記述すると、基底クラスのメソッドをオーバーライドすることができます。

基底クラス
package  
{
	public class Shape
	{
		public static function draw():void {
			trace("draw shape");
		}
	}
}
派生クラス
package  
{
	public class Circle extends Shape
	{
		override public static function draw():void {
			trace("draw circle");
		}
	}
}
オーバーライドする前の基底クラスのメソッドを呼び出す

オーバーライドしたメソッドについて基底クラスのものを呼び出す場合はsuperを記述します。

package  
{
	public class Circle extends Shape
	{
		override public static function draw():void {
			trace("draw shape");
			super.draw();
		}
	}
}

オーバーライドの禁止

あるクラス以降は継承してもメソッドをオーバーライドできないようにしたい場合は、メソッドの先頭にfinalを付けます。

package  
{
	public class Shape
	{
		final public static function draw():void {
			trace("draw shape");
		}
	}
}