π€ Language/TypeScript
[Language/TypeScripts] μμ
TerryEHLee
2023. 7. 27. 13:51
μ μ: ν΄λμ€ κ°μ κ΄κ³λ₯Ό μ μνλ κ°λ μΌλ‘, κΈ°μ‘΄ ν΄λμ€μ μμ±/λ§€μλλ₯Ό λ¬Όλ €λ°μ μλ‘μ΄ ν΄λμ€λ₯Ό μ μν μ μμ.
extends ν€μλλ₯Ό μ¬μ©νμ¬ κ΅¬νν¨.
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound() {
console.log('λλ¬Ό μ리~');
}
}
class Dog extends Animal {
age: number;
constructor(name: string) {
super(name);
this.age = 5;
}
makeSound() {
console.log('λ©λ©!'); // λΆλͺ¨μ makeSound λμκ³Ό λ¬λΌμ!
}
eat() { // Dog ν΄λμ€λ§μ μλ‘μ΄ ν¨μ μ μ
console.log('κ°μμ§κ° μ¬λ£λ₯Ό λ¨Ήμ΅λλ€.');
}
}
class Cat extends Animal { // Animalκ³Ό λ€λ₯Όκ² νλλ μμ΄μ!
}
const dog = new Dog('λλ μ΄');
dog.makeSound(); // μΆλ ₯: λ©λ©!
const cat = new Cat('μΌμΉμ΄');
cat.makeSound(); // μΆλ ₯: λλ¬Ό μ리~
- Animal Class: λΆλͺ¨ν΄λμ€, Dog class: μμν΄λμ€
- super: μμν΄λμ€κ° λΆλͺ¨ν΄λμ€λ₯Ό μ°Έμ‘°ν λ μ¬μ©
- μμν΄λμ€κ° λΆλͺ¨ν΄λμ€μ μμ κ°μ κ²½μ° μμ±μ μλ΅ κ°λ₯.
- Dog classdpt makeSound()methodλ₯Ό μλ‘κ² μ μνλλ° μ΄λ₯Ό overridingμ΄λΌ ν¨.
μλΈνμ , μνΌνμ
- μνΌνμ : μλΈνμ μ κ²λ€μ μ¬μ©ν μ μμ. μ μμ μμ Animalμ΄ μ΄μ ν΄λΉ. any μμ μνΌνμ
- μλΈνμ : μνΌνμ μ κ²λ€μ μμ λ‘κ² μ¬μ©ν μ μμ. μ μμ μμ Dog, Catμ΄ ν΄λΉ.
upcasting/downcasting
- upcasting: μλΈνμ
μ μνΌνμ
μΌλ‘ λ³ννλ κ².
let dog: Dog = new Dog('λμμ΄'); let animal: Animal = dog; // upcasting λ°λ! animal.eat(); // μλ¬. μνΌνμ (Animal)μΌλ‘ λ³νμ΄ λμ΄ eat λ©μλλ₯Ό νΈμΆν μ μμ΄μ!
- downcasting: μνΌνμ
μ μλΈνμ
μΌλ‘ λ³ννλ κ².
let animal: Animal; animal = new Dog('λμμ΄');
let realDog: Dog = animal as Dog;
realDog.eat(); // μλΈνμ
(Dog)λ‘ λ³νμ΄ λμκΈ° λλ¬Έμ eat λ©μλλ₯Ό νΈμΆν μ μμ£ !
```
Reference