타입스크립트에서 상속은 어떻게 이루어지나요?
_____A1: 타입스크립트에서는 `extends` 키워드를 사용해 클래스 간 상속을 선언합니다. 예를 들어,
```typescript
class Parent {
greet() {
console.log("Hello from Parent");
}
}
class Child extends Parent {
// Child는 Parent의 greet 메서드를 상속합니다.
}
```
Q2: 상속받은 클래스에서 부모 생성자를 호출하려면 어떻게 해야 하나요?
A2: 자식 클래스 생성자에서 `super()`를 호출하여 부모 클래스의 생성자를 실행해야 합니다. 예:
```typescript
class Parent {
constructor(public name: string) {}
}
class Child extends Parent {
constructor(name: string, public age: number) {
super(name); // 부모 생성자 호출
}
}
```
Q3: 메서드 오버라이딩은 어떻게 하나요?
A3: 자식 클래스 내에서 부모 클래스와 동일한 이름의 메서드를 다시 정의하면 오버라이딩 됩니다. 예:
```typescript
class Parent {
greet() {
console.log("Hello from Parent");
}
}
class Child extends Parent {
greet() {
console.log("Hello from Child");
}
}
```
Q4: 부모 클래스 메서드를 오버라이드 하면서 호출하는 방법은?
A4: 자식 클래스 메서드 내에서 `super.메서드명()`을 사용해 부모 메서드를 호출할 수 있습니다. 예:
```typescript
class Parent {
greet() {
console.log("Hello from Parent");
}
}
class Child extends Parent {
greet() {
super.greet(); // 부모 메서드 호출
console.log("Hello from Child");
}
```
Q5: 상속받은 프로퍼티는 어떻게 접근하나요?
A5: 부모 클래스의 프로퍼티는 자식 클래스 내에서 `this` 키워드를 통해 접근할 수 있습니다.
```typescript
class Parent {
protected name: string = "Parent";
}
class Child extends Parent {
showName() {
console.log(this.name); // "Parent"
}
}
```
Q6: 타입스크립트에서 다중 상속이 가능한가요?
A6: 클래스는 단일 상속만 지원하며, 다중 상속은 불가능합니다. 하지만 인터페이스를 다중 구현하는 방식으로 유사한 효과를 낼 수 있습니다.
```typescript
interface A { /* ... */ }
interface B { /* ... */ }
class C implements A, B { /* ... */ }
```
Q7: 상속받은 클래스의 접근 제한자 규칙은 어떻게 되나요?
A7:
- `public`: 어디서나 접근 가능
- `protected`: 자식 클래스 및 해당 클래스 내에서만 접근 가능
- `private`: 해당 클래스 내에서만 접근 가능, 자식 클래스에서는 접근 불가
Q8: 추상 클래스를 상속받는 방법은?
A8: 추상 클래스는 `abstract` 키워드를 붙이며, 추상 메서드를 자식 클래스가 반드시 구현해야 합니다. 예:
```typescript
abstract class Animal {
abstract makeSound(): void;
move(): void {
console.log("Moving...");
}
}
class Dog extends Animal {
makeSound() {
console.log("Bark");
}
}
```
Q9: 부모 클래스의 생성자가 없는 경우에도 상속이 가능한가요?
A9: 네, 부모 클래스에 생성자가 없으면 기본 생성자가 자동으로 생성되므로 자식 클래스가 `super()`를 호출하면 문제없이 상속할 수 있습니다.
Q10: 상속과 인터페이스 구현의 차이점은?
A10:
- 상속(`extends`)은 코드 구현을 물려받고 사용할 수 있게 합니다.
- 인터페이스 구현(`implements`)은 클래스가 특정 타입 구조를 만족하도록 강제하는 역할이며, 실제 구현 코드를 제공하지 않습니다.
작성자:
최지윤 [비회원]
| 작성일자: 1년 전
2024-09-10 05:32:09
조회수: 127 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 127 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.