JavaScript 강의

5-2 Class

kagan-draca 2024. 8. 18. 17:15

 

JavaScript에서 ES6에 도입됐다.

 

Class 생성 방법

 

class 클래스 이름

{

}

으로 class를 생성 할 수 있다.

 

Class의 내용물(인스턴스) 초기화 방법(constructor(생성자))

 

class 클래스 이름

{

    constructor(name, age, gender)

    {

        // this 연산

        this.name = name

        this.age = age

        this.gender = gender     

    }

}

로 class의 내용물을 생성 및 초기화 할 수 있다.

 

클래스 객체 생성 방법

 

타입 변수명 = new(new 연산자) 클래스 이름 (인스턴스 값들)

 

로 클래스 객체를 생성할 수 있다.

 

Class의 메서드 생성

 

class 클래스 이름

{

    constructor(name, age, gender)

    {

        this.name = name

        this.age = age

        this.gender = gender     

    }

    메서드 이름()

    {

        console.log(this.name + "이 인사 합니다")

    }

}

 

const person = new Person(인스턴스 값들)

person.메서드 이름()

 

 

Class의 Setters, Getters

 

class 클래스 이름

{

    #name //private 인스턴스

    constructor(name, age, gender)

    {

        this.#name = name

        this._age = age //protected 인스턴스

        this.gender = gender //public 인스턴스

    }

    set 메서드 이름(매개변수)

    {

        this.인스턴스 이름 = 매개변수

    }

    get 메서드 이름()

    {

        return this.#인스턴스 이름

        또는

        return this._인스턴스 이름

    }

}

 

타입 변수명 = new Person(매개변수)

변수명.setter 메서드 = "변경할 값"

console.log(변수명.getter메서드 명)

 

 

으로 Person Class의 인스턴스인 name, age, gender가 변경되는걸 볼 수 있다.

 

setter, getter 메서드 만들 때 유의사항

 

1. class의 인스턴스와 이름이 겹치면 안 된다.

 

 

해결 방법 :

 

1. 인스턴스나 메서드의 이름을 다르게 만들면 된다.

2. 접근 범위 제한 연산자를 사용하면 된다.(주로 사용됨)

(

   # : private

   _ : protected

  일반 이름 : public

)

 

(중요)정보 은닉(접근 범위 제한 연산자) : Class의 인스턴스나 함수 접근 가능 범위

정보 은닉을 통해 외부에서 Class의 인스턴스 무차별적인 접근과 값 변경을 막을 수 있다.

  public(그냥 인스턴스 이름) protected(_인스턴스 이름) private(#인스턴스 이름
클래스 내부 O O O
상속 받은 클래스 O O X
클래스 외부 O X X

 

ex )

 

private 인스턴스
#인스턴스 이름
constructor(매개변수, ...)
{
    this.#인스턴스 이름 = 매개변수
}
constructor 생성자에서 
this.#인스턴스로 접근하기 전
class 내부에서 
#인스턴스 이름으로 선언 돼 있어야 한다.
private 메서드
#메서드 이름()
{
    ~~~~~~~~~
}
private 메서드는
해당 Class 내부에서만
접근 및 변경 가능하다

 

protected 인스턴스
constructor(매개변수, ...)
{
    this._인스턴스 이름 = 매개변수
}
constructor 생성자에서 
this._인스턴스로 선언 및 초기화가 가능하다.
protected 메서드
_메서드 이름()
{
    ~~~~~~~~~
}
protected 메서드는
해당 Class 내부와 상속 받은 Class에서
접근 및 변경 가능하다.

 

 

public 인스턴스
constructor(매개변수, ...)
{
    this.인스턴스 이름 = 매개변수
}
constructor 생성자에서 
this.인스턴스로 생성 및 초기화가 가능하다.
public  메서드
메서드 이름()
{
    ~~~~~~~~~
}
public 메서드는
어느 곳에서 모두
접근 및 변경 가능하다

 

 

'JavaScript 강의' 카테고리의 다른 글

5-4 Static(정적) Method(메서드)  (0) 2024.08.18
5-3 상속  (0) 2024.08.18
5-1 DOM  (0) 2024.08.18
4-1 콜백 함수의 기본 개념  (0) 2024.08.14
3-3 this(정의, 활용법, 바인딩, call, applay, bind)  (0) 2024.08.14