객체 지향 생성자 ( Constructor )

배병일 ㅣ 2023. 8. 4. 15:32

객체 지향 프로그래밍을 하면 생성자 ( Constructor ) 를 들어보게 됨.

 

class User { // 상위 클래스 ( 부모 클래스 )
  constructor(firstName, lastName, nickName) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.nickName = nickName;
  }

  sayhello() {
    return `${this.firstName}${this.lastName}의 닉네임은 ${this.nickName}입니다.`;
  }
}

우선 User 라는 상위(부모) 클래스를 만들어 줌.

 

여기서 생성자 ( Constructor ) 를 사용했는데

 

이는 User 클래스가 상속되어 질때 제일 먼저 사용되는 함수라 생각하면 됨.

 

이 코드에서는 firstName, lastName, nickName 을 무조건 받아와야 한다는 의미.

( JS 라서 없으면 오류가 뜨지 않고 undefined 라고 출력되긴 함 )

 

받아온 값을 이용해 sayhello라는 함수를 만듦.

 

1.

const test = new User("배", "병일", "뺑")

console.log(test1.say()); // 배병일의 닉네임은 뺑입니다.

이런식으로 사용가능함.

 

2.

class my extends User {
	constructor(firstName, lastName, nickName) {
        super(firstName, lastName, nickName)
    }
}

const test1 = new my("배", "병일", "뺑"); 

console.log(test1.sayhello()); // 배병일의 닉네임은 뺑입니다.

하위 (자식) 클래스에서 생성자 (constructor) 를 만들어주고,

상위( 부모 클래스 ) 의 constructor(생성자) 함수(메서드) 에 접근하기 위해서는 super()를 사용한 뒤에 접근 가능함.

 

3.

class my extends User {
  say(firstName, lastName, nickName) {
    super.firstName = firstName;
    super.lastName = lastName;
    super.nickName = nickName;
    return super.sayhello();
  }
}

const test1 = new my("배", "병일", "뺑");

console.log(test1.say()); //  배병일의 닉네임은 뺑입니다.

3번 방법은 say라는 함수를 따로 만들고 상위(부모) 클래스에 접근하기 위해 super. 을 사용함.

 

super. 을 사용하여 상위(부모) 클래스의 constructor(생성자) 에 접근하여 값을 넣어줬고,

 

return super.sahello() 로 상위(부모) 클래스의 함수(메서드)를 사용함.

'Javascript' 카테고리의 다른 글

JavaScript 동작 원리  (0) 2024.02.15
객체지향 프로그래밍  (0) 2023.08.04
enum에 쉽게 value 지정하기  (0) 2023.07.26
javascript 에서 enum 사용  (0) 2023.07.25
데이터 타입 ( 숫자, 문자 ) 정리  (0) 2023.06.09