Flash CS3 설명서 |
|||
| ActionScript 3.0 프로그래밍 > ActionScript의 객체 지향 프로그래밍 > 클래스 > 클래스 정의 | |||
ActionScript 3.0 클래스 정의에는 ActionScript 2.0 클래스 정의와 비슷한 구문이 사용됩니다. 올바른 클래스 정의 구문에는 class 키워드 뒤에 클래스 이름이 나옵니다. 클래스 이름 뒤에는 중괄호({})로 묶인 클래스 본문이 나옵니다. 예를 들어, 다음 코드에서는 visible이라는 변수 하나가 들어 있는 Shape라는 클래스가 만들어집니다.
public class Shape
{
var visible:Boolean = true;
}
중요한 구문 변경 내용 중 하나는 패키지 안에 있는 클래스의 정의와 관련된 것입니다. ActionScript 2.0에서는 클래스가 패키지 안에 있는 경우 클래스 선언에 패키지 이름이 포함되어야 합니다. ActionScript 3.0에서는 package 문이 도입되어, 패키지 이름이 클래스 선언이 아닌 패키지 선언에 포함되어야 합니다. 예를 들어, 다음 클래스 선언에서는 flash.display 패키지에 속한 BitmapData 클래스가 ActionScript 2.0과 ActionScript 3.0에서 정의된 방식을 볼 수 있습니다.
// ActionScript 2.0
class flash.display.BitmapData {}
// ActionScript 3.0
package flash.display
{
public class BitmapData {}
}
ActionScript 3.0에서는 다음 네 가지 특성 중 하나를 사용하여 클래스 정의를 수정할 수 있습니다.
|
특성 |
정의 |
|---|---|
|
|
런타임에 속성을 인스턴스에 추가할 수 있게 합니다. |
|
|
다른 클래스에서 확장할 수 없습니다. |
|
|
현재 패키지 내에서 참조할 수 있습니다. |
|
|
모든 위치에서 참조할 수 있습니다. |
internal의 경우를 제외하고 이러한 각 특성에 연결된 비헤이비어를 사용하려면 특성을 명시적으로 포함해야 합니다. 예를 들어, 클래스를 정의할 때 dynamic 특성을 포함하지 않으면 런타임 시 속성을 클래스 인스턴스에 추가할 수 없습니다. 특성을 명시적으로 지정하려면 다음 코드와 같이 클래스 정의 시작 부분에 특성을 배치합니다.
dynamic class Shape {}
abstract라는 특성은 이 목록에 포함되어 있지 않습니다. 이는 ActionScript 3.0에서 추상 클래스가 지원되지 않기 때문입니다. 또한 private 및 protected라는 특성도 목록에 포함되어 있지 않습니다. 이러한 특성은 클래스 정의 내에서만 의미가 있으며 클래스 자체에는 적용할 수 없습니다. 패키지 외부에서 클래스를 공용으로 참조할 수 없게 하려면 클래스를 패키지 내에 배치하고 클래스에 internal 특성을 지정합니다. 또는 internal과 public 특성을 모두 생략하여 컴파일러에서 자동으로 internal 특성을 추가하도록 합니다. 클래스가 정의된 소스 파일 외부에서 클래스를 참조할 수 없게 하려면 클래스를 소스 파일 맨 아래에서 패키지 정의의 닫는 중괄호 밑에 배치합니다.
중괄호로 묶인 클래스 본문은 클래스의 변수, 상수 및 메서드를 정의하는 데 사용됩니다. 다음 예제에서는 Adobe Flash Player API의 Accessibility 클래스 선언을 보여 줍니다.
public final class Accessibility
{
public static function get active():Boolean;
public static function updateProperties():void;
}
클래스 본문 내에 네임스페이스를 정의할 수도 있습니다. 다음 예제에서는 클래스 본문 내에 네임스페이스를 정의하여 해당 클래스에서 메서드의 특성으로 사용하는 방법을 보여 줍니다.
public class SampleClass
{
public namespace sampleNamespace;
sampleNamespace function doSomething():void;
}
ActionScript 3.0에서는 클래스 본문 내에 정의뿐만 아니라 명령문도 포함시킬 수 있습니다. 클래스 본문 내에 있지만 메서드 정의 외부에 있는 명령문은 클래스 정의가 처음 실행되어 관련 클래스 객체가 만들어질 때 정확히 한 번만 실행됩니다. 다음 예제에는 외부 함수인 hello()에 대한 호출과 클래스가 정의될 때 확인 메시지를 출력하는 trace 문이 포함되어 있습니다.
function hello():String
{
trace("hola");
}
class SampleClass
{
hello();
trace("class created");
}
// 클래스가 생성될 때 출력합니다.
hola
class created
이전 버전의 ActionScript와 달리 ActionScript 3.0에서는 같은 클래스 본문 내에서 이름이 같은 정적 속성과 인스턴스 속성을 정의할 수 있습니다. 예를 들어, 다음 코드에서는 message라는 정적 변수 및 이름이 같은 인스턴스 변수를 선언합니다.
class StaticTest
{
static var message:String = "static variable";
var message:String = "instance variable";
}
// 스크립트에서
var myST:StaticTest = new StaticTest();
trace(StaticTest.message); // 출력: static variable
trace(myST.message); // 출력: instance variable
Flash CS3
이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서
현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/main/00000061.html