본문 바로가기

JAVA

Java class 03 - 상속


- 클래스의 기능을 자유롭게 호출하고 기능을 확장하기 위해 먼저 선언된 클래스를 선조(super)로, 기능을 필요로하는 클래스를 후손(this)으로 관계(extends)를 가진 경우를 말한다
- 단일 상속(무조건 선조가 하나)을 원칙으로 하며 다중상속은 클래스 간에 허용되지 않는다
* 후손인 클래스를 선조로 상속받는 것은 가능

- 후손클래스는 선조클래스의 멤버변수와 메서드를 사용할 수 있다

   -> 선조클래스를 상속받고 후손클래스에 필요한 추가적인 속성과 기능을 구현

public class 자식클래스 extends 부모클래스 {

}

예제)

public class AA {
	
	protected int a;
	protected int b;
	
	public AA(int a, int b) {
		this.a = a;
		this.b = b;
        	System.out.println("num1 = " + a + "  num2 = " + b );
	}
	
	public void getSum(){
    	System.out.println("합 : " + ( a + b ) );
	}

}
public class BB extends AA{
	
	public BB(int a,int b) {
		super(a, b);
	}
	public void getSub() {
		System.out.println("차 : " + (a - b));
	}
	
	public static void main(String[] args) {
		BB a1 = new BB(5,3);
		
		a1.getSum();
		a1.getSub();
	}
}
num1 = 5 num2 = 3
합 : 8
차 : 2

BB 클래스가 AA 클래스를 상속받음으로써 멤버변수 int a와 int b, 합을 구하는 메소드 getSum()을 사용할 수 있게 된다.

 

- super : 선조 클래스의 참조 값을 가지고 있는 예약어

 -> BB클래스의 생성자에서 AA 클래스의 생성자가 호출되어

     a에 5, b에 3을 대입하고 "num1 = 5 num2 = 3"을 출력한다

 ** super()를 생성자 코드에서 사용할때는 반드시 맨 첫줄에 기술하여야 한다

 

후손 클래스에서 선조 클래스와 동일한 이름의 메서드를 구현한 경우,

하위클래스에서 동일한 이름의 선조 클래스 메소드를 가리킬 때도 사용한다. 

'JAVA' 카테고리의 다른 글

Java 인터페이스  (0) 2021.08.10
Java class 04 - 추상클래스  (0) 2021.08.09
JAVA 접근제한자 및 getter & setter  (0) 2021.08.04
JAVA class 02 - 생성자  (0) 2021.08.03
JAVA class 01  (0) 2021.08.02