안녕하세요~ 

이번 시간에는 자바의 상속 관계에서 사용하는 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( )
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 사용하기! 
  • 메서드 이름은 동일하지만 기능을 추가할 때는 오버라이딩 사용하기! 
▲영상으로 한번 더 복습하세요 :)