programing

Dart에서 슈퍼 생성자를 어떻게 호출합니까?

nicescript 2021. 1. 15. 07:53
반응형

Dart에서 슈퍼 생성자를 어떻게 호출합니까?


Dart에서 슈퍼 생성자를 어떻게 호출합니까? 명명 된 슈퍼 생성자를 호출 할 수 있습니까?


예, 구문이 C #에 가깝습니다 . 여기에 기본 생성자와 명명 된 생성자가 모두있는 예제가 있습니다.

class Foo {
  Foo(int a, int b) {
    //Code of constructor
  }

  Foo.named(int c, int d) {
    //Code of named constructor
  }
}

class Bar extends Foo {
  Bar(int a, int b) : super(a, b);
}

class Baz extends Foo {
  Baz(int c, int d) : super.named(c, d);  
}

하위 클래스에서 인스턴스 변수를 초기화 super()하려면 이니셜 라이저 목록에서 호출이 마지막에 있어야합니다.

class CBar extends Foo {
  int c;

  CBar(int a, int b, int cParam) :
    c = cParam,
    super(a, b);
}

/ r / dartlang 에서이 super()통화 가이드 라인 의 동기에 대해 읽을 수 있습니다 .


슈퍼 클래스의 개인 생성자를 호출 할 수 있습니까?

예,하지만 생성중인 수퍼 클래스와 서브 클래스가 동일한 라이브러리에있는 경우에만 가능합니다. (개인 식별자는 정의 된 전체 라이브러리에서 볼 수 있기 때문에). 개인 식별자는 밑줄로 시작하는 식별자입니다.

class Foo {    
  Foo._private(int a, int b) {
    //Code of private named constructor
  }
}

class Bar extends Foo {
  Bar(int a, int b) : super._private(a,b);
}

인터페이스 (같은 클래스 구현 다트 지원하는 암시 적 인터페이스는 당신이있는 경우), 상위 생성자를 호출 할 수 없습니다 구현 을 당신은 사용해야 확장합니다 . 구현 을 사용 하는 경우 Eduardo Copat의 솔루션 확장 하고 사용 하도록 변경하십시오 .


이것은 내가 당신과 공유하는 파일입니다.있는 그대로 실행하십시오. 슈퍼 생성자를 호출하는 방법과 슈퍼 매개 변수화 된 생성자를 호출하는 방법을 배웁니다.

/ Objectives
// 1. Inheritance with Default Constructor and Parameterised Constructor
// 2. Inheritance with Named Constructor

void main() {

    var dog1 = Dog("Labrador", "Black");

    print("");

    var dog2 = Dog("Pug", "Brown");

    print("");

    var dog3 = Dog.myNamedConstructor("German Shepherd", "Black-Brown");
}

class Animal {

    String color;

    Animal(String color) {
        this.color = color;
        print("Animal class constructor");
    }

    Animal.myAnimalNamedConstrctor(String color) {
        print("Animal class named constructor");
    }
}

class Dog extends Animal {

    String breed;

    Dog(String breed, String color) : super(color) {
        this.breed = breed;
        print("Dog class constructor");
    }

    Dog.myNamedConstructor(String breed, String color) : super.myAnimalNamedConstrctor(color) {
        this.breed = breed;
        print("Dog class Named Constructor");
    }
}

참조 URL : https://stackoverflow.com/questions/13272035/how-do-i-call-a-super-constructor-in-dart

반응형