Java

[Java]Super() - 부모의 기본생성자

MoZZANG 2022. 3. 14. 21:54
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