이번 포스트에서는 TypeScript를 사용하여 객체지향 프로그래밍의 중요한 측면인 접근 제한자와 상속에 대해 알아보겠습니다.
접근 제한자 (Access Modifiers)
접근 제한자는 클래스 멤버 변수와 메소드의 접근을 제어하는 데 사용됩니다. TypeScript에서는 세 가지의 접근 제한자를 제공합니다.
1. public
기본적으로 TypeScript 클래스의 멤버 변수와 메소드는 public
으로 설정됩니다. 이는 클래스 외부에서도 모두 접근 가능하다는 뜻입니다.
2. private
private
접근 제한자는 해당 멤버 변수와 메소드를 클래스 내부에서만 접근 가능하도록 합니다.
class Example {
private secret: string;
getSecret() {
return this.secret;
}
}
위의 예시에서 secret
멤버 변수는 private
으로 정의되어 클래스 외부에서는 접근할 수 없습니다.
3. protected
protected
접근 제한자는 해당 멤버 변수와 메소드를 클래스 내부 및 파생 클래스에서만 접근 가능하도록 합니다.
class Animal {
protected name: string;
}
위의 예제에서 name
멤버 변수는 protected
로 정의되어 Animal
클래스를 상속받는 하위 클래스에서만 접근 가능합니다.
상속 (Inheritance)
상속은 하위 클래스가 상위 클래스의 특성을 물려받는 것을 의미합니다. TypeScript에서는 extends
키워드를 사용하여 클래스간의 상속을 구현할 수 있습니다.
class Animal {
protected name: string;
constructor(name: string) {
this.name = name;
}
}
class Dog extends Animal {
private breed: string;
constructor(name: string, breed: string) {
super(name);
this.breed = breed;
}
getDetails() {
return `${this.name} is a ${this.breed}`;
}
}
위의 예시에서 Dog
클래스가 Animal
클래스를 상속받았습니다. super
키워드를 사용하여 상위 클래스의 생성자를 호출하고, 상위 클래스의 protected
멤버 변수에 접근할 수 있습니다.
결론
TypeScript의 접근 제한자와 상속을 사용하여 클래스의 구조를 효율적으로 설계할 수 있습니다. 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 객체지향 프로그래밍의 기본 개념을 잘 숙지하여 탄탄한 코드를 작성하는 데 도움이 될 것입니다.
이상으로 TypeScript 클래스에서의 접근 제한자와 상속에 대해 알아보았습니다. 감사합니다!
참고 자료
- TypeScript Handbook - Classes: https://www.typescriptlang.org/docs/handbook/classes.html
- MDN Web Docs - Inheritance in JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain