본문 바로가기

02. JavaScript/01. 기본개념, 문법 (ES6)

JavaScript_02. 문법_15_Class

※ 본 내용은 해당 교재를 참고하여 공부한 내용과 본인의 생각을 정리한 글입니다.

https://www.yes24.com/Product/Goods/105608999

 

바닐라 자바스크립트 - 예스24

실무 역량까지 한 번에 잡을 수 있는바닐라 자바스크립트 이론서자바스크립트는 이제 브라우저를 넘어 웹 애플리케이션뿐만 아니라 마이크로 컨트롤러까지 점점 사용하는 곳이 늘어나고 있다.

www.yes24.com

 

 

 클래스는 객체를 생성하기 위한 템플릿이다. 클래스는 데이터이를 조작하는 코드를 하나로 추상화한다.

 

● Class 정의

 클래스는 클래스명 앞에 class라는 키워드를 사용해서 정의할 수 있다. 그리고 반드시 constructor 함수를 가집니다. constructor 함수는 class로 생성된 객체를 생성하고 초기화하기 위한 특수 함수이다.

 

 

constructor 함수에서는 클래스를 생성할 때 필요한 기본 값을 파라미터로 전달받고, 클래스 객체에 변수로 등록하는 코드를 구현한다. 이때 this 키워드를 사용해서 변수를 선언한다.

 

 

Class 사용

 이렇게 정의된 클래스는 new 키워드를 사용해서 클래스를 생성할 수 있다.

 

 

 

  Class 내부 함수 정의

 클래스에 정의한 각 변수를 set, get 할 수 있는 내부 함수를 추가한다. (예제 코드 참고)

 

 

Class 상속

 정의된 클래스를 상속받아서 새로운 클래스를 정의할 수 있다. 이때 상속받은 부모에 해당하는 클래스에 정의된 변수, 함수 등 모든 특성을 그대로 상속받아서 사용할 수 있게 되고, 자식에 해당하는 클래스에는 추가적인 부분만 정의를 하면 된다.

 

(기존 부모 클래스에 정의된 변수, 함수 + 자식 클래스에서 새로운 기능 추가)

 

ex.

자동차(Car)클래스를 상속받아 전기 자동차(ElelctricCar) 클래스를 만든다.

(기존의 자동차 기능 + 전기 자동차만의 기능 추가)

 

<!DOCTYPE html>
<html>
  <head>
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1. Class 정의
      // class 클래스명 {
      //   constructor(매개변수) { // class로 생성된 객체를 생성하고 초기화하기 위한 특수 함수 
      //     // 초기화 코드
      //   }
      class Car {
        constructor(modelName, modelYear, type, price) {
          this.modelName = modelName;
          this.modelYear = modelYear;
          this.type = type;
          this.price = price;
        }

        //3. Class 내부 함수 정의
        getModelName() {
          return this.modelName;
        }

        getModelYear() {
          return this.modelYear;
        }

        getPrice() {
          return this.price;
        }

        setModelName(modelName) {
          this.modelName = modelName;
        }

        setModelYear(modelYear) {
          this.modelYear = modelYear;
        }

        setType(type) {
          this.type = type;
        }

        setPrice(price) {
          this.price = price;
        }
      }
      //2. Class 사용
      // 다음 예제 코드처럼 new 키워드를 사용해서 클래스를 생성할 수 있다.
      let car = new Car("ionic", "2021", "e", 4000); //아이오닉 차량 생성

      let modelName = car.getModelName(); //차량 모델명 가져오기
      car.setPrice(4300); //차량 가격 변경
      console.log(car.getModelName());
      console.log(car.getModelYear());
      console.log(car.getPrice());

      car.setPrice(4100);
      console.log(car.getPrice());

      let car2 = new Car("genesis", "2021", "g", 6500);
      console.log(car2.getModelName());
      console.log(car2.getModelYear());
      console.log(car2.getPrice());

      //4. Class 상속
      //상속받은 Car에 이미 자동차에 대한 특성을 상속 받았기 때문에 충전시간(chargeTime)만 새로 정의
      class ElectricCar extends Car {
        constructor(modelName, modelYear, price, chargeTime) {
          super(modelName, modelYear, "e", price);
          this.chargeTime = chargeTime;
        }

        setChargeTime(time) {
          this.chargeTime = time;
        }

        getChargeTime() {
          return this.chargeTime;
        }
      }

      let eleCar1 = new ElectricCar("ionic5", "2021", 4000, 60);
      eleCar1.setChargeTime(60);
      console.log(eleCar1.getModelName());
      console.log(eleCar1.getChargeTime());
    </script>
  </body>
</html>