추상류

12212 단어 TypeScripttech

개시하다

JavaScript에 없고 TypeScript에 도입된 기능 중 하나는 추상류이다.
반에 관해서는 제가 예전에 범주 및 상속쓴 적이 있는데, 여러분이 읽을 수 있다면 너무 좋아요!

추상류의 사용 방법


//抽象クラス
abstract class Person {
  constructor(protected readonly name: string, public age: number) {}
  abstract hello(): void;
}
클래스 앞에 abstract 수식자가 있습니다.이 행에서 퍼슨반이 추상반이라고 판단할 수 있다.
그리고 Hello 방법에도 abstract 수식자가 있습니다.
이것은 Person류의 하위 클래스(이하 Japanese류라고 약칭)를 계승하여 Hello 방법을 강제로 썼다는 것을 의미한다
abstract class Person {
  constructor(protected readonly name: string, public age: number) {}
  abstract hello(): void;
}

class Japanese extends Person {//エラー(非抽象クラス 'Japanese' はクラス 'Person' からの継承抽象メンバー 'hello' を実装しません。)
  //継承先 extends 継承元
  constructor(name: string, age: number, private gender: "male" | "female") {
    super(name, age); //superメソッドで継承元のプロパティを継承先でも使える状態にします。
    this.gender = gender; //継承元のプロパティを受け継いだあとにJapanese独自のプロパティを設定。
  }
}
하위 클래스에서 Hello 방법이 없을 때 오류가 발생합니다.

따라서 Japanese 클래스에서는 Person 클래스 hello 방법의 유형에 따라 기술hello 방법을 지정해야 합니다.
abstract class Person {
  constructor(protected readonly name: string, public age: number) {}
  abstract hello(): void;
}

class Japanese extends Person {
  //継承先 extends 継承元
  constructor(name: string, age: number, private gender: "male" | "female") {
    super(name, age); //superメソッドで継承元のプロパティを継承先でも使える状態にします。
    this.gender = gender; //継承元のプロパティを受け継いだあとにJapanese独自のプロパティを設定。
  }
  hello() {
    console.log("konnichiwa" + this.name); //←継承元のメソッドを上書きすることができます。
  }
}

const takashi = new Japanese("Takashi", 24, "male");
takashi.hello(); //konnichiwaTakashi

추상류의 주의점


① 추상적인 방법에는 실장을 포함할 수 없다


추상 클래스에서 정의된 추상적인 방법에서 수치 단계의 코드를 쓸 수 없습니다
abstract class Person {
  constructor(protected readonly name: string, public age: number) {}
  abstract hello() {//エラー(メソッド 'hello' は abstract に指定されているため、実装を含めることができません。)
    console.log("hello");
  }
}
추상적인 방법은 유형 단계의 코드만 받아들인다

② 추상류를 실례화할 수 없다


추상 클래스의 Person을 직접 실례화하려면 Typerscript에서 오류가 발생합니다.
abstract class Person {
  constructor(protected readonly name: string, public age: number) {}
  abstract hello(): void;
}
const bob = new Person();//エラー(抽象クラスのインスタンスは作成できません。)
abstract를 통해 추상적인 클래스를 계승한 하위 클래스에서 실례화하도록 강요합니다.

정리 언어


• abstract를 지정하여 실례화할 수 없으며 계승원의 클래스를 추상클래스라고 부른다.(이번 예는 Person 레벨)
• 추상류를 계승하는 아류를 구상류라고 한다.(이번 예는 일본반)
• 추상류에서 실현되지 않지만 추상류를 계승한 구상류에서 실시하는 방법이나 값을 추상성원이라고 부른다.(이번 예는 Hello 방법)

좋은 웹페이지 즐겨찾기