
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