Day5_VSCODE_JavaScript_ (재정리) _상속의 활용

2023. 4. 11. 13:04Javascript

상속

부모 클래스

class Animal {
            constructor(color) {
                this.color = color;
            }
            eat() {
                console.log('먹는다!')
            }
            sleep() {
                console.log('잔다!')
            }
        }

 

상속 클래스 만들기

 class Dog extends Animal {
            play(){
                console.log('논다!');
            }

        }


//확인
        const Rucy =new Dog('white')
        console.log(Rucy)
        Rucy.eat();    
        Rucy.sleep();    
        Rucy.play();
        
        
//2번째 예시

        class Cat extends Animal{
            constructor(color,name){
                super(color); //부모 쪽 컬러를 사용시 부모쪽으로 보내는 법
                this.name = name
            }
            //오버라이딩
            eat(){
                console.log('맛있게 먹는다!')
            }

        }

        const Horang = new Cat('black','호랭이')
        console.log(Horang)
        Horang.eat();

연습 문제

 

[문제]        
정직원과 아르바이트를 나타낼 수 있는 클래스를 생성 하자
[조건]
클래스 2개 만들기:FullTimeEmployee / PartTimeEmployee        
직원 정보: 이름, 부서명, 한달 근무 시간       
급여: 정직원(2만원), 아르바이트(1만원)     

매달 직원들의 정보를 이용해서 한달 급여를 계산하는 메소드를 구현       

메소드 이름(calculatePay())       
예시) kim.calculatePay() -> 한달 급여       
클래스 3개 (부모 1개, 자식이 직원,아르바이트 급여)

본인이 작성한 코드

 class total {
            constructor (name,major,time){
                this.name = name
                this.major = major
                this.time = time
            }
        }

        class FullTimeEmployee extends total{
            
            earning(){
                const earn = (this.time*20000)
                console.log(typeof(this.time))
                console.log(`${this.name}의 한달 급여는 : ${earn}`)
            }

        }

        class PartTimeEmployee extends total{
            earning(){
                const earn = (this.time * 10000)
                console.log(`${this.name}의 한달 급여는 : ${earn}`)
            }

        }

        const a = new FullTimeEmployee('최영현','몰라',5)
        console.log(typeof(a.time))
        a.earning();
        b = new PartTimeEmployee('정진우','가나다',8)
        b.earning();

 

 

강사님 코드

 

 class employee{
            constructor(name,department,hoursPerMonth,Payrate){
                this.name=name
                this.department=department
                this.hoursPerMonth=hoursPerMonth
                this.Payrate=Payrate
            }
            calculatepay(){
                return this.hoursPerMonth * this.Payrate
            }
        }

        class FullTimeEmployee2 extends employee{
            static Pay_Rate = 20000; //고정적이기때문에 메모리에 먼저
            constructor(name,department,hoursPerMonth){
                super(name,department,hoursPerMonth,FullTimeEmployee2.Pay_Rate);
            }
        }

        class PartTimeEmployee2 extends employee{
            static Pay_Rate = 10000; //고정적이기때문에 메모리에 먼저
            constructor(name,department,hoursPerMonth){
                super(name,department,hoursPerMonth,PartTimeEmployee2.Pay_Rate);
            }
        }
        const kim = new FullTimeEmployee2('김사과','개발',160);
        const lee = new PartTimeEmployee2('이메론','디자이너',100)
        console.log(kim.calculatepay());
        console.log(lee.calculatepay());

 

728x90