super와 super() 개념 정리
super와 super()의 용도
- super
- super는 자신이 상속받은 부모 클래스에 대한 레퍼런스 변수로, 부모 클래스의 멤버에 접근할 때 사용됩니다.
- 주로 객체 안에 있는 부모의 멤버변수와 자신의 멤버변수를 구별하기 위해 사용됩니다.
- super()
- super()는 자식 클래스의 생성자에서 부모 클래스의 생성자를 호출하기 위해서 사용됩니다.
- super()는 생성자 코드 안에서 사용될 때, 다른 코드에 앞서 첫줄에 사용되어야 합니다.
- 자식 클래스의 모든 생성자는 부모 클래스의 생성자를 포함하고 있어야 합니다.
그런데 만약 자식 클래스의 생성자에 부모 클래스의 생성자가 지정되어 있지 않다면, 컴파일러가 자동으로 부모 클래스의 기본 생성자를 호출합니다.
(이러한 경우, 부모 클래스에 매개변수가 있는 생성자만 있고, 기본 생성자가 없어 기본 생성자를 호출할 수 없다면 에러가 발생합니다.
사용예제
- Book 클래스 정의 (부모 클래스)
-
public class Book { String title ="미입력"; int price = -1; int code = 100; public Book() {} // 기본생성자 public Book(String title, int price) { // 매개변수 2개인 생성자 this.title = title; this.price = price; } public void showPrice() { System.out.println(title + "의 가격은 " + price + "원 입니다"); } }
-
- EnglishBook 클래스 정의 (자식 클래스)
-
public class EnglishBook extends Book { int code = 200; public EnglishBook() {} // 기본생성자 public EnglishBook(String title, int price) { // 매개변수 2개인 생성자 super(title, price); } public void showPrice() { super.showPrice(); // 부모클래스의 메소드 호출 System.out.println(""); System.out.println("code : " + code); System.out.println("this.code : " + this.code); System.out.println("super.code : " + super.code); System.out.println(""); System.out.println("price : " + price); System.out.println("this.price : " + this.price); System.out.println("super.price : " + super.price); } }
-
- 객체 생성 및 실행
-
public class HelloWorld { public static void main(String[] args) { EnglishBook b1 = new EnglishBook("영어책", 1000); b1.showPrice(); } }
-
- 결과
-
영어책의 가격은 1000원 입니다. code : 200 this.code : 200 super.code : 100 price : 1000 this.price : 1000 super.price : 1000
-
'JAVA' 카테고리의 다른 글
[JAVA] - 필드란 (Field) (0) | 2024.01.31 |
---|---|
[JAVA] - 추상화 / 캡슐화 / 상속 / 다형성 (0) | 2024.01.30 |
[JAVA] - this와 this() (0) | 2024.01.27 |
[JAVA] - 생성자 (0) | 2024.01.27 |
[JAVA] - Naming Convention (1) | 2024.01.27 |