본문 바로가기

오버라이딩 (Property)

속성 오버라이딩

인스턴스(또는 클래스) 속성은 클래스(또는 인스턴스) 속성으로 오버라이드 할 수 있다.
하지만 많은 혼동을 초래하기 때문에 반대의 과정을 사용하는 것은 좋지 않다.
인스턴스 속성은 오버라이드 시 자바와 달리 개별 인스턴스에서 동일한 속성 값을 가진다.
속성 오버라이드에서는 super 연산자로 슈퍼클래스의 속성에 접근할 수 없다.

클래스 속성 오버라이딩

class A {
  // 클래스 속성 s 생성
  public static var s:Number = 20;
}

class B extends A {
  // 클래스 속성 s를 오버라이드
  public static var s:Number = 25;

  public function showS ( ) {
    // 서브클래스의 속성 사용 s
    trace ( "B.s is: " + B.s );
    // 슈퍼클래스의 속성 사용 s
    trace ( "A.s is: " + A.s );
  }
}

var bInstance:B = new B ( );
bInstance.showS ( );  // 출력
// B.s is: 25;
// A.s is: 20;


인스턴스 속성 오버라이딩

class A {
  public var p:Number;
  public function setTo20 ( ):Void {
    p = 20;
  }
}

class B extends {
  public varp:Number;
  public function setTo10 ( ):Void {
    p = 10;
  }
}

var bInstance:B = new B ( );

// 슈퍼클래스의 메소드에서 p를 설정
bInstance.setTo20 ( );
trace ( bInstance.p );  // 출력 20;
// 서브클래스의 메소드에서 p를 설정
bInstance.setTo10 ( );
trace ( bInstance.p );  // 출력 10;