클래스와 인스턴스

비유

대장간에는 검을 만들 거푸집과 1000'c의 뜨거운 강철이 있다. 대장장이는 거푸집이 망가지지 않고, 강철이 적지 않게 있다면 검을 계속 해서 만들 수 있을 것이다.

클래스와 인스턴스는 각각 거푸집과 1000'c의 강철에 해당한다. 대장장이는 코딩을 하고 있는 자신이다.

물론 우리는 1000'c의 강철이 무제한으로 있다.

따라서 우리는 무한대로 검을 만들 수 있다.

클래스(class), 인스턴스(instance)란?

자바스크립트나 객체지향 언어에서 클래스는 속성과 행위를 정의한 것이다.

따라서 마치 거푸집의 모양이 다르다면 다른 모양의 검이 나오는 것처럼 클래스에 속성,행위에 따라 각각 다른 인스턴스(장검, 단검, 양날검 등)를 만들어 낼 것이다.

class, instance Ex)

class Human {
    constructor(name, age) {
        this.name = name
        this.age = age
    }

    whoAreYou() {
        return `나는 ${this.name}라고 하고 ${this.age} 살이야`
    }

}

const willi = new Human('willi', 25)   //나는 'willi'라고 하고 25 살이야

class

1.클래스 Human을 생성하였다.
2.Human의 속성(이름, 나이)을 지정해주었다.
3.human의 행위(함수)를 지정해주었다. > 행위는 생성자 밖으로 지정해야함.

instance

1.이름 willi라는 새로운 사람을 선언하고 이름과 나이 지정
2.새로운 사람 생성

심화 ex)

class parents {
    constructor(name, money, car, home) {
        this.name = name
        this.money = money
        this.car = car
        this.home = home
    }
    AreYouAGoldDigger() {
        return `우리 부모님은 ${this.money}$와 차 ${this.car}대와 집 ${this.home}채가 있어`
    }

}
const billi = new parents('billi', 1000, 3, 3)
const jamie = new parents('jamie', 500000, 50, 20)

이건해보기~

부모클래스에서 자식클래스로 속성,메소드 전달하기

class의 속성과 행위를 다른 class에 똑같이 사용하고 싶은데..

그럴땐!
ctrl+c,v를 이용하시면.. 적은량이라면 상관없겠지만 많은 양이라면 혼선을 줄 수 있습니다.

따라서!
저희는 extends와 super를 통해 부모의 속성,행위 값을 자식에게 전달해줄 겁니다.

예시!

부모

class student {
  constructor(age,sex){
    this.age = age
    this.sex = sex
  }
}

자식

const student = require('student');

class Bee extends student {   
  constructor(name,age) {
    super(age) 
    this.name = name
    this.grade = 80
  }
 
 test(){  
    return `내 나이${this.age} 내 이름${this.name} 난 공부가 하기싫다.`
  }
}

const billi = new Bee('billi',15)

//billi.test()

super => 자식클래스가 부모클래스의 생성자를 가져옴
extends => 자식클래스가 부모클래스의 메소드를 가져옴

여기까지가 class의 상속이였습니다~짝짝짝

좋은 웹페이지 즐겨찾기