-
[JS] 클래스(class) [생성, 확장(extends)]Javascript 2023. 4. 21. 15:48

▶ 클래스(class)
- 프로토타입 기반 상속을 사용
- 객체를 생성하기 위한 템플릿
- 붕어빵 틀 : class / 붕어빵 : instance
- 생성자 속성은 선택 사항
class Animal { constructor(name, sound) { this.name = name; this.sound = sound; } getInfo() { return this.name + '이(가) ' + this.sound + ' 소리를 낸다.'); } } //상속, 확장 class Friends extends Animal { constructor(name, sound) { super(name, sound); } } const dog = new Friends('개', '멍멍'); const cat = new Friends('고양이', '냐옹'); dog.getInfo(); //개이(가) 멍멍 소리를 낸다. cat.getInfo(); //고양이(가) 냐옹 소리를 낸다.※ 생성자 내부의 super()는 생성자 내에서만, 그리고 this 키워드를 사용하기 전에만 쓸 수 있다.
▶ javascript의 class는 java와 유사하지만, 몇 가지 차이점이 있다.
- 상속: Javascript의 class는 다중 상속을 허용하지 않지만, Java는 다중 상속을 지원한다.
- 생성자: Javascript의 class는 constructor 키워드로 정의되지만, Java에서는 생성자 메서드를 사용한다.
- 프로토타입: Javascript에서는 프로토타입을 사용하여 클래스의 메서드와 속성을 정의하지만, Java에서는 인스턴스 메서드와 정적 메서드를 사용한다.
- 접근 제어자: Java에서는 public, private, protected와 같은 접근 제어자를 사용하여 클래스의 멤버에 대한 접근을 제어할 수 있지만 Javascript에서는 이러한 접근 제어자가 없다.
'Javascript' 카테고리의 다른 글
[JS] async / await (0) 2023.04.24 [JS] 클로저(Closure) (0) 2023.04.24 [JS] 매우 복잡한 javascript에서의 this (0) 2023.04.21 [JS] 즉시 실행 함수 표현(IIFE, Immediately Invoked Function Expression) (0) 2023.04.20 [JS] 호이스팅(hoisting) (0) 2023.04.20