수색…


정적 메서드를 통해 "오버로드 된"생성자

As3에서는 생성자 오버로드를 사용할 수 없습니다.

클래스의 인스턴스를 검색하는 다른 방법을 제공하기 위해 public static 메서드를 제공하여 대체 "생성자"로 사용할 수 있습니다.

예를 들어, 2D 점 개체를 나타내는 flash.geom.Point 가 있습니다. 점을 정의하는 좌표는 다음과 같을 수 있습니다.

  • 정규 생성자의 데카르트

    public function Point(x:Number = 0, y:Number = 0) 
    

    예제 사용법 :

    var point:Point = new Point(2, -.5);
    
  • 정적 방법의 극성

    public static function polar(len:Number, angle:Number):Point
    

    예제 사용법 :

    var point:Point = Point.polar(12, .7 * Math.PI);
    

    실제 생성자가 아니기 때문에 new 키워드가 없습니다.

함수 설정 및 가져 오기

캡슐화를 보장하려면 클래스의 멤버 변수가 private 이어야하며 공용 get / set 액세스 메서드를 통해서만 public 액세스 할 수 있어야합니다. 개인 필드 앞에 _

public class Person
{
    private var _name:String = "";

    public function get name():String{
        return _name;
        //or return some other value depending on the inner logic of the class
    }


    public function set name(value:String):void{
        //here you may check if the new value is valid
        //or maybe dispatch some update events or whatever else
        _name = value;
    }

때로는 get / set 쌍을위한 private 필드를 생성 할 필요조차 없습니다.
예를 들어 맞춤 라디오 그룹과 같은 컨트롤에서 어떤 라디오 버튼이 선택되었는지 알 필요가 있지만 클래스 외부에서는 선택한 값만 get 오거나 set 하는 방법 만 있으면됩니다.

public function get selectedValue():String {
    //just the data from the element
    return _selected ? _selected.data : null;
}
public function set selectedValue(value:String):void {
    //find the element with that data
    for (var i:int = 0; i < _elems.length; i++) {
        if (_elems[i].data == value) {
            _selected = _elems[i];//set it 
            processRadio();//redraw
            return;
        }
    }
}

패키지

패키지는 클래스 묶음입니다. 모든 클래스는 package 문을 사용하여 package 내에서 선언되어야합니다. package 문 다음에 패키지 이름이오고 최상위 패키지에 클래스를 추가하는 경우에는 아무 것도 표시되지 않습니다. 하위 패키지는 도트 ( . ) 구분을 사용하여 만듭니다. package 문 다음에 단일 class 정의를 포함 하는 블록 이옵니다 . 예 :

package {
    // The top level package.
}

package world {
    // A package named world.
}

package world.monsters {
    // A package named monsters within a package named world.
}

패키지는 소스 루트에 상대적인 클래스의 파일 구조와 관련이 있어야합니다. src 라는 이름의 원본 루트 폴더가 있다고 가정하면 위의 내용을 파일 시스템에 올바르게 표시 할 수 있습니다.

src
    TopLevelClass.as
    
    world
        ClassInWorldPackage.as
        AnotherClassInWorldPackage.as
        
        monsters
            Zombie.as

메소드 재정의

클래스를 extend 할 때 override 키워드를 사용하여 상속 된 클래스에서 정의하는 메서드를 override 할 수 override .

public class Example {
    public function test():void {
        trace('It works!');
    }
}

public class AnotherExample extends Example {
    public override function test():void {
        trace('It still works!');
    }
}

예:

var example:Example = new Example();
var another:AnotherExample = new AnotherExample();

example.test(); // Output: It works!
another.test(); // Output: It still works!

super 키워드를 사용하여 상속 된 클래스에서 원래 메소드를 참조 할 수 있습니다. 예를 들어, AnotherExample.test() 의 본문을 다음과 AnotherExample.test() 변경할 수 있습니다.

public override function test():void {
    super.test();
    trace('Extra content.');
}

를 야기하는:

another.test(); // Output: It works!
                //         Extra content.

클래스 생성자를 재정의하는 것은 약간 다릅니다. override 키워드는 생략되고 상속 된 생성자에 액세스하는 것은 단순히 super() 를 사용하여 수행됩니다.

public class AnotherClass extends Example {
    public function AnotherClass() {
        super(); // Call the constructor in the inherited class.
    }
}

getset 메서드를 재정의 할 수도 있습니다.

게터와 세터

getter 및 setter는 속성처럼 작동하는 메서드입니다. 함수 구조를 가졌음을 의미하지만 사용되는 경우 속성과 동일하게 사용됩니다.

getter 함수의 구조 :

그들은이 있어야 get 후 키워드를 function 인수없이, 반환 유형을 지정하고 값을 반환해야합니다, 키워드 및 함수 이름 앞에 :

public function get myValue():Type{
    //anything here
    return _desiredValue;
}

구문 :

getter에서 값을 얻으려면 구문에서 속성에서 값을 가져 오는 것과 같습니다 (no parens () 사용).

trace(myValue);

setter 함수의 구조 :

function 키워드 뒤에 function 이름 앞에 키워드를 set 하고 하나의 인수로 값을 반환하지 않아야합니다.

public function set myValue(value:Type):void{
    //anything here
    _desiredProperty=value;
}

구문 :

setter의 값을 설정하기 위해 구문은 값을 속성으로 설정하는 것과 같습니다 (등호 = 다음 값 사용).

myValue=desiredValue;

한 값에 대한 getter 및 setter 설정 :

참고 : 이름이 getter 또는 setter 만 만드는 경우 해당 속성은 읽기 전용 또는 설정 전용입니다.

속성을 읽기 쉽고 설정 가능하게 만들려면 getter와 setter를 다음과 같이 작성해야합니다.

1. 같은 이름.
2. 같은 유형 (getter에 대한 리턴 값의 유형 및 setter에 대한 입력 값 (인수)의 유형,

참고 : getters와 setter는 다른 속성이나 메서드와 같은 이름을 가져서는 안됩니다.

getter 및 setter의 사용법 :

일반적인 속성보다는 getter와 setter를 사용하면 많은 장점이 있습니다.

1. 읽기 전용 또는 설정 전용 속성 만들기 :
예 : 표시 객체에있는 자식 수입니다. 그것은 설정할 수 없습니다.

2. 사유 재산에 접근하기 :
예 :

private var _private:Type=new Type();
//note that function name "private" is not same as variable name "_private"  
public function get private():Type{
    return _private;
}

3. 값을 설정 한 후 약간의 변경이 필요할 때 :
이 예제에서이 속성을 변경하려면 알림을 받아야합니다.

public static function set val:(input:Type):void{
    _desiredProperty=input;
    notifyValueChanged();
}

기타 많은 용도



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow