#TIL16 (3)

전혜린·2021년 8월 9일
0

Today I Learned

목록 보기
23/64

class Vehicle {
constructor(name, wheel) {
this.name = name
this.wheel = wheel
}
}
const myVehicle = new Vehicle('운송수단', 2)
console.log(myVehicle)

상속(확장)

  • extends: 확장(상속)을 의미하는 키워드
  • extends Vehicle: 운송수단에 대한 정보를 Bicycle라는 새로운 클래스로 확장(상속)해서 기본적인 내용을 이 내부에서 사용하겠다 라는 의미
  • Bicycle 클래스에서 super 함수 추가적으로 사용 가능
  • super : extends 키워드 뒤에 붙어있는 확장된 클래스 즉, Vehicle을 의미하며 super가 있는 그 자리에서 Vehicle가 실행된다고 보면 됨
  • super 부분에 인수로 사용되는 name, wheel 매개변수는 vehicle의 constructor(name, wheel)로 들어감
  • class를 사용 한다는 것은 미리 만들어져 있는 어떠한 정보에 추가적으로 살을 붙여가면서 새로운 기능들을 확장이라는 개념으로 관리해 줄 수 있다는 것을 의미

class Bicycle extends Vehicle {
constructor(name, wheel) {
super(name, wheel)
}
}
const myBicycle = new Bicycle('삼천리', 2)
const daughtersBicycle = new Bicycle('세발', 3)
console.log(myBicycle)
console.log(daughtersBicycle)

class Car

  • Vehicle라는 운송수단을 의미하는 class를 상단에서 만들어 놓음
  • 기존의 내용을 가지고 온 다음 추가적인 내용 일부만 작성해서 Vehicle에서 Car로 한단계 발전할 수 있는 개념으로 확장 혹은 상속이라는 개념 사용
  • Car라는 클래스를 새로 만들 때 이미 만들어져 있는 Vehicle 라는 기능이 있으므로 그것을 가지고 와서 extends 키워드와 함께 작성 해주면 위쪽에서 정의되어져 있는 기능을 Car라는 클래스 내부에서 따로 작성하지 않고도 사용 가능
  • 또한, super라는 함수를 실행해서 super가 Vehicle라는 클래스로 실행될 수 있게 Vehicle라는 클래스가 요구하는 인수들을 Car 클래스가 실행되는 부분에서 받아 super함수의 자리에서 Vehicle클래스 실행
  • Vehicle의 기본로직에 추가적으로 this.license 부분에 3번째 인수로 받은 license 유무를 매개변수로 받아서 사용가능하도록 추가적인 로직 정리

class Car extends Vehicle {
constructor(name, wheel, license) {
super(name, wheel)
this.license = license
}
}
const myCar = new Car('벤츠', 4, true)
const daughtersCar = new Car('포르쉐', 4, false)
console.log(myCar)
console.log(daughtersCar)

profile
코딩쪼아

0개의 댓글