class Tiger{
constructor(color){
this.color = color;
}
eat(){
console.log("냐미");
}
sleep(){
console.log("쿨..")
}
}
class Dog{
constructor(color){
this.color = color;
}
eat(){
console.log("냐미");
}
sleep(){
console.log("쿨..");
}
play(){
console.log("놀자왈왈");
}
}
중복되는 코드가 너무 많고, 지저분함
class Animal{
constructor(color){
this.color = color;
}
eat(){
console.log("냐미");
}
sleep(){
console.log("쿨....")
}
}
class Tiger extends Animal{
}
class Tiger는 클래스 Animal을 상속받음.
class Doggy extends Animal{
constructor(color, ownerName){ // 원래있던 color도 받아와야함
super(color); //상속하고 있는 Animal 을 가르킴.
this.ownerName = ownerName;
}
get play(){
console.log("놀자");
}
eat(){
// 오버라이딩 - 자식클라스에서 부모클라스에 있는 함수를 고침
super.eat();
//부모클라스의 함수 호출.
console.log("쮸룹");
}
}
class Doggy 또한,클래스 Animal을 상속받음.
const puppy = new Doggy('누렁이','정우');
puppy.play;
puppy.eat();
console.log(puppy)
접근자 프로퍼티를 사용했기 때문에 () 없이 호출
const tiger = new Tiger('노랑까망'); //Tiger의 객체를 만듦.
const doggy = new Tiger('노랑까망'); //Tiger의 객체를 만듦.
console.log(tiger);
doggy.eat();
doggy.sleep();
참고 :
extends