클래스(Class)와 인스턴스(Instance)

Ryurbsgks·2021년 11월 1일
0

JavaScript(JS)

목록 보기
14/15
post-thumbnail

클래스(Class)

클래스는 객체를 생성하기 위한 템플릿이라고 생각하면 된다.

1. 클래스(Class) 선언

클래스를 선언하기 위해서는 클래스의 이름 앞에 class 키워드를 사용한다.

클래스를 선언할때 암묵적인 규칙으로 클래스명은 대문자로 시작하며 일반명사로 만든다.

class Character{
  constructor(name){
    this.name=name;
    this.level=1;
  }
  
  attack(){
    console.log(`${this.name}가 공격합니다.`);
  }
}

생성자(Constructor)

생성자 메서드는 클래스로 생성된 객체를 생성하고 초기화하기 위한 메서드이다.

생성자 메서드는 클래스안에서 한 개만 존재할 수 있으며 return 값을 만들지 않는다.
생성자의 인자(argument)를 정의할때는 this를 사용해야한다.

constructor(name){
  this.name=name;
  this.level=1;
}

메서드

해당 클래스에서 작동하는 기능들을 사용하기 위한 메서드

생성자의 인자를 사용하기 위해서는 this를 사용해야한다.

attack(){
  console.log(`${this.name}가 공격합니다.`);
}

상속

부모 클래스에서 자식 클래스로 부모 클래스의 속성과 메서드를 물려주는 과정을 상속이라고 한다.

JS에서는 extendssuper 키워드를 사용하여 상속을 구현할 수 있다.

class Job extends Character{
  constructor(name, job){
    super(name);
    this.job=job;
  }
  
  info(){
    console.log(`${this.name}의 레벨은 ${this.level}이며 ${this.job}으로 전직하였습니다.`);
  }
}

인스턴스(Instance)

클래스의 속성과 메서드를 담고 있는 객체

즉 클래스로 만든 객체가 인스턴스라고 생각하면 된다.

1. 인스턴스(Instance) 생성

인스턴스를 만들 때에는 new 키워드를 사용한다.

이렇게 생성된 인스턴스는 class의 고유한 속성과 메서드를 갖게 된다.

let ryu=new Character("ryu");
// expected output : {name:"ryu", level:1}
ryu.attack();
// expected output : ryu가 공격합니다.

let warriorRyu=new Job(ryu.name, "warrior");
// expected output : {name:"ryu", level:1, job:"warrior"}
warriorRyu.attack();
// expected output : ryu가 공격합니다.
warriorRyu.info();
// expected output : ryu의 레벨은 1이며 warrior으로 전직하였습니다.
profile
코딩도전기

0개의 댓글