super키워드란?
- 부모클래스를 지칭한다.
- 즉, 부모 클래스의 맴버(인스턴스형, 메소드)에 접근할 때 사용한다.
- 자식클래스와 부모클래스의 맴버명이 동일할 때 구분해주기 위한 키워드(this와 동일)
- 정적메소드안에서 사용불가하다(this와 동일)
super()
- 부모의 생성자 호출
- 자식의 생성자 안에서만 호출가능하다
- this()와 super() 동시호출 불가하며 자식의 생성자(기본, 인자)에서는
- super()로 명시하지 않으면 무조건 먼저 부모의 기본 생성자를 호출한다.
- super()역시 항상 첫문장으로 기술
super() 를 사용해보기 위해 동물로 예제를 들어보겠다.
▲ 부모클래스가 될 Animal을 추상화 해주었다.
▲ Animal을 상속받을 Dog클래스를 만들었다. 기본생성자와 인자생성자를 만들어 주었으며 dogKind와 dog클래스 자체의 year변수를 만들어 확장시켰다.
Dog에서 int year변수를 만듦으로써 Animal의 int year과 겹치게 되었다. 즉 부모와 자식클래스에서 맴버가 겹치게 된 것이다. 이럴 때 혼동방지를 위해 사용할 수 있는 것이바로 super키워드이다.
또한 부모클래스의 인자생성자나 기본생성자를 사용할 때는 super()메소드를 이용하면 된다.
자 이제 출력을 해보면 다음과 같다.
▲ 위에서 Dog의 year는 0이고 Animal의 year는 2인 것에 중점을 두어야한다. 우리가 Dog클래스에서 super()인자생성자로 인자값을 받았기 때문에 인자값은 모두 Animal에 있는 변수에 저장되었기 때문이다.
'Java' 카테고리의 다른 글
[Java]InstanceOf (0) | 2022.03.15 |
---|---|
[Java]오버라이드(Override) (0) | 2022.03.15 |
[Java]상속(Inheritance) (0) | 2022.03.14 |
[Java]String Constructor (0) | 2022.03.14 |
[Java]싱글톤 디자인(Single Tone Design) (0) | 2022.03.14 |