javascript 19
2025/02/18 강의
Table of Contents
1. 클래스의 개념과 필요성
2. 클래스 정의와 인스턴스 생성
3. 클래스 속성과 메서드
4. 생성자 함수
5. 클래스 상속
6. instanceof 연산자
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`안녕하세요, 저는 ${this.name}입니다.`);
}
}
let person1 = new Person("홍길동", 30);
let person2 = new Person("김철수", 25);
person1.sayHello(); // "안녕하세요, 저는 홍길동입니다." 출력
person2.sayHello(); // "안녕하세요, 저는 김철수입니다." 출력
static
키워드를 사용하여 정의class MathUtil {
static square(x) {
return x * x;
}
}
console.log(MathUtil.square(4)); // 16 출력
extends
키워드 사용super
키워드로 부모 클래스의 생성자 호출class Animal {
constructor(name) {
this.name = name;
}
speak() {
}
console.log(`${this.name}이(가) 소리를 냅니다.`);
class Dog extends Animal {
constructor(name) {
super(name); // 부모 클래스의 생성자 호출
}
bark() {
console.log("멍멍!");
}
}
let myDog = new Dog("뽀삐");
myDog.speak(); // "뽀삐이(가) 소리를 냅니다
myDog.bark(); // "멍멍!" 출력
super
키워드는 constructor 안에서만 사용 가능
🅠 class member function 을 private 하게 쓰는 방법이 있는지?
🅐 typescript 에서는 있다. javascript 에서는 모르겠다.
class Cat extends Animal {
speak() {
console.log(`${this.name}이(가) 야옹하고 웁니다.`);
}
}
let myCat = new Cat("나비");
myCat.speak(); // "나비이(가) 야옹하고 웁니다." 출력
시스템 함수는 overriding 하는 키워드가 따로 있음
class Animal {}
class Dog extends Animal {}
let myDog = new Dog();
console.log(myDog instanceof Dog); // true
console.log(myDog instanceof Animal); // true
console.log(myDog instanceof Object); // true
console.log(myDog instanceof Array); // false
function handlePet(pet) {
if (pet instanceof Dog) {
console.log("강아지를 돌봅니다.");
} else if (pet instanceof Cat) {
console.log("고양이를 돌봅니다.");
} else {
console.log("알 수 없는 동물입니다.");
}