[ JavaScript ] ES6 : class & class 의 상속(extends)

2021. 2. 15. 21:05·Archive/Develop
728x90
반응형

기존 자바스크립트에서 객체지향 구현시 function 이 생성자였다.

 

function 으로 하다보니 표현력이 떨어지고, 코드가 점점 복잡해졌다.

 

 

그래서 ES6 에서는 class 키워드가 나타났다.

 

 

 

1. class

 

 

class Study{
	constructor(name){
    	this.name = name;
    }
	getName(){
    	return this.name;
    }
}
let study = new Study("철보빡");
console.log("study.getName();" + study.getName());

 

 

 

 

class 키워드를 이용해서 클래스를 정의하고 Study 클래스를 선언했다.

 

 

생성자 함수는 constructor 라는 이름으로 정의되어있는데,

 

이는 클래스가 생성될때 기본적으로 호출되는 함수이다.

 

 

 

클래스는 new 키워드로 객체를 만들어 사용한다.

 

객체를 생성할 때 전달한 인자인 "철보빡" 은 생성자의 파라미터로 전달되어

 

name 을 초기화 시켰다.

 

 

 

 

이에 따라 getName 메소드를 이용해 name 을 출력시켰다.

 

 

 

 

 

2. class extends

 

 

다른 객체 지향 언어들과 마찬가지로 extends 키워드를 이용하여 클래스를 상속받을 수 있다.

 

 

class Study{
	constructor(name){
    	this.name = name;
    }
	getName(){
    	return this.name;
    }
}
let study = new Study("철보빡");
console.log("study.getName();" + study.getName());

class Coding extends Study{
	constructor(name){
    	super(name);
    }
}
let subject = new Coding('coding');
console.log("subject instanceof Coding : "+ (subject instanceof Coding));
console.log("subject instanceof Study : "+ (subject instanceof Study));
console.log("subject.getName() : "+ subject.getName());

 

 

 

 

 

자바스크립트에서 자식 클래스를 초기화 하려면

 

먼저 부모 클래스의 생성자를 호출해야하므로

 

 

자식클래스의 생성자에 super 메소드를 사용해 부모 클래스의 생성자를 호출해야한다.

 

 

위의 예시에서 알 수 있는 것은,

 

subject 가 Coding 의 instance 이면서 Coding 이 Study 의 자식이므로

 

subject 가 Study 의 자식인지에 대한 여부에서 true 가 나온 것이다.

 

 

그렇기 때문에 getName 이라는 메소드를 사용할 수 있었던 것을 알 수 있다.

 

 

 

 

 

결론적으로, class 키워드는 내부적으로 함수처럼 동작한다.

ES6 에서는 객체지향에서 중요한 개념인 클래스와 상속을 정립했다.

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] ES6 : IIFE(즉시 실행 함수)  (0) 2021.02.15
[ JavaScript ] ES6 : Arrow Function & this (화살표 함수)  (0) 2021.02.15
[ JavaScript ] ES6 : 비구조화 할당(Destructuring)  (0) 2021.02.15
[ JavaScript ] ES6 : 템플릿 문자열 표현식 | 백틱  (0) 2021.02.15
[ JavaScript ] ES6 : TDZ (Temporal Dead Zone) | let 참조에러  (0) 2021.02.15
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] ES6 : IIFE(즉시 실행 함수)
  • [ JavaScript ] ES6 : Arrow Function & this (화살표 함수)
  • [ JavaScript ] ES6 : 비구조화 할당(Destructuring)
  • [ JavaScript ] ES6 : 템플릿 문자열 표현식 | 백틱
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    코드업 기초
    코드업
    백준
    oracle db
    백준 문제풀이
    javascript
    docker
    Codeup
    자바스크립트
    자바스크립트 API
    비박스
    파이썬 문제
    파이썬 기초 문제
    C++
    오라클
    장고
    백준 풀이
    카카오 100일 프로젝트
    Django
    파이썬
    파이썬 알고리즘
    자바스크립트 객체
    파이썬 백준
    보안뉴스
    Oracle
    Python
    파이썬 기초
    코드업 파이썬 기초 100제
    Git
    백준 파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] ES6 : class & class 의 상속(extends)
상단으로

티스토리툴바