# 7.class

# 목차

  1. 1. Class
  2. 2. 기본문법
    1. 2.1. 정의
    2. 2.2. 생성자
    3. 2.3. 메소드
    4. 2.4. 상속
  3. 3. 예제
    1. 3.1. 선언
    2. 3.2. 작성
    3. 상속

# 1. Class

mdn
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes

자바스크립트의 클래스는 반복사용하는 객체를 전역적으로 생성하고 관리할수 있는 문법이다.

class ? 객체 팩토리 Class는 객체의 모양과 동작에 대해 미리 정의해 놓은 틀 클래스는 객체의 기본값(속성)을 정해놓고 메소드를 여러번 정의하기 위해쓴다.

# 2. 기본문법

# 2.1. 정의

클래스는 class 키워드를 사용하여 정의한다

class ClassName {
	// 클래스 내용
}

# 2.2. 생성자

클래스는 생성자를 가질 수 있다. 생성자는 클래스의 객체를 만들 때 호출되며 객체의 초기 상태를 설정하는 데 사용함.

class ClassName {
	// 클래스 내용
}

# 2.3. 메소드

클래스 내에서 메소드는 함수와 같이 정의된다. 메소드는 클래스의 객체에서 호출된다.

class ClassName {
	constructor() {
		// 생성자 내용
	}

	methodName() {
		// 메소드 내용
	}
}

# 2.4. 상속

클래스는 다른 클래스를 상속할 수 있다. 상속은 extends 키워드를 사용하여 정의된다.

class ChildClassName extends ParentClassName {
	// 클래스 내용
}

# 3. 예제

클래스는 호이스팅이 안되므로 사용전 선언해야 한다.

# 3.1. 선언

class Mango {
	constructor() {} //생성자
	method() {} //메서드
}

클래스는 생성자함수와 메서드를 갖는다

# 3.2. 작성

미리보기
https://qwerewqwerew.github.io/source/js/partial/class/4.html

  1. Dog 클래스에 생성자 함수를 선언하고 name 속성에 값을 할당한다.
  2. printName 함수에 name 을 콘솔로 출력하는 내용을 작성한다.
  3. 상수에 new 키워드로 클래스 인스턴스를 할당한다
  4. 이제 상수 dog 은 Dog 인스턴스의 메소드를 사용할수 있다
class Dog {
	constructor() {
		this.name = '망고';
	}
	printName() {
		console.log(this.name);
	}
}

const dog = new Dog();
dog.printName();

# 상속

미리보기
https://qwerewqwerew.github.io/source/js/partial/class/5.html

Dog 는 Breed 의 속성을 상속받는다

서브클래스 Dog 에서는 super() 메소드를 호출해야 한다.

class Breed {
	constructor() {
		this.kind = '말티즈';
	}
	printKind() {
		console.log(this.kind);
	}
}
class Dog extends Breed {
	constructor() {
		super();
		this.name = '망고';
	}
	printName() {
		console.log(this.name);
	}
}
const dog = new Dog();
dog.printName();
dog.printKind();