클래스 기초

nara_lee·2025년 2월 18일
0

javascript 19
2025/02/18 강의
Table of Contents
1. 클래스의 개념과 필요성
2. 클래스 정의와 인스턴스 생성
3. 클래스 속성과 메서드
4. 생성자 함수
5. 클래스 상속
6. instanceof 연산자

1. 클래스의 개념과 필요성

2. 클래스 정의와 인스턴스 생성

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  sayHello() {
    console.log(`안녕하세요, 저는 ${this.name}입니다.`);
  }
}

3. 클래스 속성과 메서드

let person1 = new Person("홍길동", 30);
let person2 = new Person("김철수", 25);
person1.sayHello(); // "안녕하세요, 저는 홍길동입니다." 출력
person2.sayHello(); // "안녕하세요, 저는 김철수입니다." 출력

4. 생성자 함수

정적 메서드

  • static 키워드를 사용하여 정의
  • 클래스 이름으로 직접 호출 가
  • 인스턴스 없이 사용 가능
class MathUtil {
	static square(x) {
		return x * x;
	}
}
console.log(MathUtil.square(4)); // 16 출력

생성자 함수 사용 시 주의사항

  • 클래스당 하나의 constructor만 가질 수 있음
  • 생성자 내에서 return문 사용하지 않는 것이 일반적
  • this 키워드로 인스턴스 속성 초기화

5. 클래스 상속

상속 구현 방법

  • 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 하는 키워드가 따로 있음

6. instanceof 연산자

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

instanceof의 활용

  • 타입 체크에 사용
  • 조건문에서 객체의 타입에 따른 처리
function handlePet(pet) {
	if (pet instanceof Dog) {
		console.log("강아지를 돌봅니다.");
	} else if (pet instanceof Cat) {
		console.log("고양이를 돌봅니다.");
	} else {
		console.log("알 수 없는 동물입니다.");
    }

0개의 댓글