인프런 커뮤니티 질문&답변

eko09님의 프로필 이미지
eko09

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

접근 제어자

TS클래스 접근제어자 상속 질문있습니다!

해결된 질문

작성

·

297

0

class Employee2 {
  constructor(
    public name: string,
    protected age: number,
    private position: string
  ) {}
  work() {
    console.log("일하는중");
  }
}

class Emp extends Employee2 {
  constructor(
    public name: string,
    protected age: number,
    public codeNum: number
  ) {
    super(name, age);
    this.codeNum = codeNum;
  }
}

private를 설정한 경우 클래스 Emp처럼 상속받았을때

super에서 3개 인수가 필요한데 2개를 가져왔다고 오류가 뜨는데 그렇다고 private 설정한 position을 con structor이나 super에 적어도 오류가발생하고

private를 설정한 클래스를 상속받아서 사용할때는 어떤식으로 해야할까요??

답변 1

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

다음과 같이 서브 클래스의 생성자에서 position을 매개변수로 받아주신다음

super 메서드를 호출하면서 전달해 주시면 됩니다.

class Employee2 {
  constructor(
    public name: string,
    protected age: number,
    private position: string
  ) {}
  work() {
    console.log("일하는중");
  }
}

class Emp extends Employee2 {
  constructor(
    public name: string,
    protected age: number,
    public codeNum: number,
    position: string
  ) {
    super(name, age, position);
    this.codeNum = codeNum;
  }
}

그럼 자동으로 다음과 같이 private 필드로 설정되어 접근이 불가능하게 됩니다.

image

 

 

eko09님의 프로필 이미지
eko09

작성한 질문수

질문하기