-
Java - 상속과 super 키워드Java/java study 2022. 1. 16. 18:06반응형
상속
class SubClass extends SuperClass{ ... }
상속이란 상위 클래스에서 정의한 필드와 메서드를 하위 클래스도 동일하게 사용할 수 있도록 물려받는 것을 말한다. 상속을 이용하면 코드의 중복을 피해주고 코드의 재사용성을 통해 간결성을 확보해준다.
자바에서는 다중 상속을 허용하지 않는다. 그 이유는 다중 상속을 하면 상속받는 복수의 부모 클래스에 중복되는 필드나 메서드가 존재하는 경우, 같은 클래스를 두 번 이상 상속받는 경우 등 여러 문제가 발생하여 부모 클래스에 접근할 방법이 애매해지는 경우가 발생한다. 이와 같은 이유로 자바에서는 단일 상속만 허용한다.
상속의 특징
- 다중 상속을 지원하지 않는다.
- 모든 클래스는 암묵적으로 Object를 상속받는다.
- 다단계 상속(Multi-Level Inheritance)이 가능하다.
super 키워드
super 키워드란?
super는 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 레퍼런스 변수이다.
super 키워드의 사용 1 - 부모 클래스의 인스턴스 변수를 참조
사용법은 간단하다. 객체 자신의 인스턴스 변수를 참조할때 this키워드를 사용한것처럼
부모 객체의 인스턴스 변수를 사용할때는 super키워드를 이용하면 된다.
class SuperClass{ int num = 50; } class SubClass enxteds SuperClass{ int num = 100; void printNum(){ System.out.println(num); // 서브 클래스의 num 값인 100 출력 System.out.println(super.num); // 슈퍼 클래스의 num 값인 50 출력 } }
super 키워드의 사용 2 - 부모 클래스의 생성자를 호출
class SuperClass{ int x = 10; int y = 20; SuperClass(int x, int y){ this.x = x; this.y = y; } } class SubClass extends SuperClass{ int z = 30; SubClass(int x, int y, int z){ super(x, y); //부모 클래스의 매개변수 x,y를 포함한 생성자 호출 this.z = z; } }
super 키워등의 사용 3 - 부모 클래스의 메소드를 호출 할 때 사용
class SuperClass{ void printImp(){ System.out.println("SuperClass의 printImp() 호출"); } } class SubClass extends SuperClass{ void printImp(){ super.prinImp(); // 부모클래스의 printImp 메서드 호출 System.out.println("SubClass의 printImp() 호출"); } }
출력 결과
SuperClass의 printImp() 호출
SuperClass의 printImp() 호출
SubClass의 printImp() 호출
반응형'Java > java study' 카테고리의 다른 글
Java - 추상 클래스(Abstract Class) (0) 2022.01.16 Java - 다이나믹 메서드 디스패치(Dynamic Method Dispatch) (0) 2022.01.16 Java - 생성자(Constructor)와 this 키워드 (0) 2022.01.09 Java - 메서드 오버로딩과 오버라이딩 (0) 2022.01.09 Java - 클래스(Class) 와 객체 생성 (0) 2022.01.09