코딩을 하다보면 똑같은 멤버변수(속성)을 가지는 여러개의 클래스를 작성할때가 있다
그 중에서도 하나의 상위클래스에 여러개의 하위클래스가 그 속성값을 가질때가있는데
예를 들어서 Hero(영웅)이라는 클래스에 name,hp라는 속성이있다고 하자
그렇다면 내가 새로운 영웅들을 만들때 그 영웅들에겐 name과 hp속성만을 넣고싶을때
이때 활용할수 있는것이 상속이다
영웅이 가진 속성,메소드들을
내가 만들 새로운영웅클래스들에게 물려주는것이라고 할수있다
연습문제를 통해 알아보자
Cal이라는 클래스에
(sum) 더하는 메소드와
(multiplry) 곱하는 메소드를 만들어 보았다
이제 cal2라는 클래스를 만들어 cal의 메소드들을 상속시켜보도록 해보자
상속을 시키려면 extends라는 명령어에
왼쪽에는 자식이 되는 클래스가
오른쪽에는 부모가되는 클래스가 들어가야한다
상속을 받은 Cal2 클래스는
cal의 메소드를 물려받았기때문에
더하기 메소드와 곱하기메소드를 기본적으로 가지고있다
여기서 메소드를 수정하고싶으면 그대로 가져와서 수정하면된다
이를 오버라이드 라고 한다.
이제 연습문제를 통해 조금더 이해를 해보도록 하자
연습문제로 Hero라는 부모클래스를 생성하여
Warrior , Archer , Wizard 라는 자식 클래스들에게 기본적인 속성과 메소드를 부여하자
우선 Hero라는 클래스를 먼저 생성해보자
Hero(영웅) 들에게 기본적으로 부여할 속성은
name 과 hp 로 설정해두고
생성자에는 name과 hp값이 필수로 들어가도록 만든뒤
attack이라는 메소드를 만들어보았다
이제 Warrior , Archer ,Wizard에 상속을 해보도록 하자
히어로 클래스를 워리어에게 상속을 하려고하자
맨처음에는 빨간줄표시로 에러가 났다
왜 그런지 빨간줄에 마우스를 올려다보니
Hero클래스에는 매개변수가 필요한 생성자가있기때문에 Warrior에게 그냥 상속할수가없다는 것이다.
이를 해결하기 위해 워리어 생성자에 super(부모) 생성자를 호출하여 매개변수가 같은값이 들어가게 만들어주자 해결이 되었다.
메소드는 오버라이드가 정상적으로 적용되는지 확인하기위해
attack 이라는 메소드를 전사가 기본공격을 합니다 로 바뀌어주고
comboAttack이라는 연속공격 메소드를 추가해주었다
이제 결과를 확인해보러가자
워리어 생성자에 가렌이라는 이름과 600이라는 hp를 넣고
이름과 hp와 콤보어택을 실험해보자
정상적으로 출력이 된다.