> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 클래스 및 상속 이해

JavaScript의 클래스 및 상속 이해

DDD
풀어 주다: 2024-12-22 17:37:11
원래의
298명이 탐색했습니다.

Understanding Classes and Inheritance in JavaScript

JavaScript의 클래스와 상속

JavaScript 클래스는 상속, 캡슐화, 다형성과 같은 객체 지향 프로그래밍(OOP) 개념을 처리하는 현대적인 방법을 제공합니다. 이 가이드에서는 클래스를 만드는 방법, JavaScript에서 상속이 작동하는 방법, 클래스를 확장하여 더 복잡한 객체를 만드는 방법을 살펴보겠습니다.


1. JavaScript 클래스

ES6에서 JavaScript는 class 키워드를 사용하여 객체를 생성하기 위한 더 깔끔하고 직관적인 구문을 도입했습니다.

클래스 정의 구문:

class ClassName {
  constructor() {
    // Initialization code
  }
  methodName() {
    // Method code
  }
}
로그인 후 복사
로그인 후 복사

기본 클래스의 예:

class Animal {
  constructor(name, type) {
    this.name = name;
    this.type = type;
  }
  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

const dog = new Animal('Buddy', 'Dog');
dog.speak();  // Output: Buddy makes a sound.
로그인 후 복사
로그인 후 복사

핵심 포인트:

  • 생성자 메서드: 생성자 메서드는 클래스에서 생성된 객체를 초기화하는 데 사용되는 특수 함수입니다.
  • 인스턴스 메서드: 클래스 내부에 정의된 함수는 클래스의 인스턴스에서 호출할 수 있는 인스턴스 메서드입니다.

2. JavaScript의 상속

상속을 통해 한 클래스는 다른 클래스의 속성과 메서드를 상속받을 수 있습니다. JavaScript에서는 확장 키워드를 사용하여 이를 달성할 수 있습니다.

상속 구문:

class ChildClass extends ParentClass {
  constructor() {
    super(); // Calls the parent class constructor
    // Additional initialization code for child class
  }
}
로그인 후 복사
로그인 후 복사

상속의 예:

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name); // Call the parent class constructor
    this.breed = breed;
  }
  speak() {
    console.log(`${this.name}, the ${this.breed}, barks.`);
  }
}

const dog = new Dog('Buddy', 'Golden Retriever');
dog.speak();  // Output: Buddy, the Golden Retriever, barks.
로그인 후 복사

핵심 포인트:

  • super(): super 키워드는 상속된 속성을 초기화하기 위해 상위 클래스의 생성자를 호출합니다.
  • 메서드 재정의: 위의 talk() 메서드에서 볼 수 있듯이 하위 클래스는 상위 클래스의 메서드를 재정의할 수 있습니다.

3. 상속과 메서드 재정의

JavaScript에서는 하위 클래스가 상위 클래스의 메서드를 재정의할 때 해당 메서드의 하위 클래스 버전이 사용됩니다. 이를 메서드 재정의라고 합니다.

메서드 재정의의 예:

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

class Cat extends Animal {
  speak() {
    console.log(`${this.name} meows.`);
  }
}

const cat = new Cat('Whiskers');
cat.speak();  // Output: Whiskers meows.
로그인 후 복사

핵심 포인트:

  • 하위 클래스가 자체 메소드 구현을 제공하는 경우 상위 클래스 메소드를 재정의합니다.
  • 하위 클래스는 여전히 super.method()를 사용하여 상위 클래스 메소드를 호출할 수 있습니다.

4. 다중 상속(직접 지원되지 않음)

JavaScript는 다중 상속을 직접 지원하지 않습니다. 즉, 클래스는 여러 클래스에서 동시에 상속할 수 없습니다. 그러나 믹스인을 사용하면 이 제한 사항을 해결할 수 있습니다.

믹스인의 예:

class ClassName {
  constructor() {
    // Initialization code
  }
  methodName() {
    // Method code
  }
}
로그인 후 복사
로그인 후 복사

핵심 포인트:

  • 믹스인은 상속을 사용하지 않고 클래스에 기능을 추가하는 방법입니다.
  • Object.sign()을 사용하여 한 개체의 속성과 메서드를 다른 개체로 "혼합"할 수 있습니다.

5. 정적 메서드 및 속성

정적 메서드와 속성은 클래스 인스턴스가 아닌 클래스 자체에 속합니다. 수업시간에 직접 호출됩니다.

정적 메소드의 예:

class Animal {
  constructor(name, type) {
    this.name = name;
    this.type = type;
  }
  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

const dog = new Animal('Buddy', 'Dog');
dog.speak();  // Output: Buddy makes a sound.
로그인 후 복사
로그인 후 복사

핵심 포인트:

  • 정적 메서드는 인스턴스별 데이터가 필요하지 않은 유틸리티 함수에 유용합니다.

6. 게터와 세터

Getter 및 Setter를 사용하면 개체 속성을 가져오고 설정하기 위한 특수 메서드를 정의할 수 있습니다. 이는 객체의 상태를 캡슐화하는 데 일반적으로 사용됩니다.

Getter 및 Setter의 예:

class ChildClass extends ParentClass {
  constructor() {
    super(); // Calls the parent class constructor
    // Additional initialization code for child class
  }
}
로그인 후 복사
로그인 후 복사

핵심 포인트:

  • Getter: 속성 값에 액세스하는 방법을 정의합니다.
  • Setter: 속성 값이 업데이트되는 방식을 정의합니다.

7. 요약

  • 클래스는 메소드를 사용하여 객체를 생성하고 해당 동작을 관리하는 현대적인 방법을 제공합니다.
  • 상속을 사용하면 한 클래스가 다른 클래스의 속성과 메서드를 상속할 수 있으므로 기능을 더 쉽게 확장할 수 있습니다.
  • 메서드 재정의를 사용하면 하위 클래스가 상위 클래스의 동작을 변경하거나 확장할 수 있습니다.
  • JavaScript는 향상된 기능과 캡슐화를 위해 정적 메서드, 믹스인, getter/setter 함수도 지원합니다.

클래스와 상속은 객체 지향 프로그래밍의 필수 개념이며, 이를 이해하면 더 깔끔하고 유지 관리하기 쉬운 JavaScript 코드를 작성하는 데 도움이 됩니다.

안녕하세요. 저는 Abhay Singh Kathayat입니다!
저는 프론트엔드와 백엔드 기술 모두에 대한 전문 지식을 갖춘 풀스택 개발자입니다. 저는 효율적이고 확장 가능하며 사용자 친화적인 애플리케이션을 구축하기 위해 다양한 프로그래밍 언어와 프레임워크를 사용하여 작업합니다.
제 비즈니스 이메일(kaashshorts28@gmail.com)로 언제든지 연락주세요.

위 내용은 JavaScript의 클래스 및 상속 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿