All About IT
[Java 기초] 상속 관계의 부모, 자식클래스 사이에서 사용하는 super 키워드
안녕하세요~
이번 시간에는 자바의 상속 관계에서 사용하는 super 키워드에 대해 알아보려고 하는데요.
어떤 방식으로 활용되는지 살펴볼까요?
부모클래스의 멤버를 자식클래스에서 호출하는 super
package day35;
public class 상속 {
public static void main(String[] args) {
Parent p = new Parent();
Child c = new Child();
System.out.println("객체 p의 a : "+p.a);
System.out.println("객체 c의 a : "+c.a);
System.out.println("객체 c의 b : "+c.b);
System.out.println("====================");
Parent p2 = new Parent(45);
Child c2 = new Child(55, 65);
System.out.println("객체 p2의 a : "+p2.a);
System.out.println("객체 c2의 a : "+c2.a);
System.out.println("객체 c2의 b : "+c2.b);
System.out.println("====================");
p.print();
c.print();
p2.print();
c2.print();
}
}
class Parent{
int a;
Parent(){
this.a = 10;
}
Parent(int a){
this.a = a;
}
public void print() {
System.out.println("부모 메소드 실행");
}
}
class Child extends Parent{
int b;
Child(){
super.a = 20;
this.b = 30;
}
Child(int a, int b){
super(a);
this.b = b;
}
public void print() {
System.out.println("자식 메소드 실행");
}
}
숫자를 저장하는 배열 score와 문자열을 저장하는 배열 name 선언 및 출력하는 코드.
오늘의 핵심 키워드
1. 상속(extends)는 부모클래스의 멤버를 자식클래스에서 물려받는 개념이다.
※ 단, 다중 상속(자식클래스에 여러 개의 부모클래스를 상속)은 불가능하다.
※ 단, 다중 상속(자식클래스에 여러 개의 부모클래스를 상속)은 불가능하다.
2. super 키워드는 부모클래스의 멤버를 자식클래스에서 호출할 때 사용한다.
ex) 필드 호출시 : super.필드, 생성자 호출시 : super( )
ex) 필드 호출시 : super.필드, 생성자 호출시 : super( )
3. 오버라이딩은 부모클래스의 메서드를 자식클래스에서 재정의하는 것을 의미한다.

① 정수를 저장하는 int타입 변수 a
② 매개변수가 없는 기본생성자 Parent( )에서 필드 a에 10 저장
③ 매개변수가 있는 생성자 Parent(int a)에서 필드 a에 매개변수 a 저장

① 정수를 저장하는 int타입 변수 b
② 매개변수가 없는 기본생성자 Child( )에서 부모에 있는 필드 a에 20 저장, 필드 b에 30 저장
③ 매개변수가 있는 생성자 Child(int a, int b)에서 부모에 있는 필드 a에 매개변수 a 저장, 필드 b에 매개변수 b 저장


① 각각 Parent, Child를 기본생성자로 생성한 객체변수 p, c
② 객체변수 p에 저장된 필드 a, 객체변수 c에 저장된 필드 a,b 출력
① 객체변수 p, c, p2, c2의 print( ) 메소드 실행
최종 출력본
꼭 봐야되는 마무리 꿀팁!
- 클래스 재사용을 통해 효율적으로 사용하기 위해서 상속 사용하기!
- 부모클래스의 멤버를 호출할 때는 super 사용하기!
- 메서드 이름은 동일하지만 기능을 추가할 때는 오버라이딩 사용하기!
▲영상으로 한번 더 복습하세요 :)