JAVA

JAVA 상속, super() + 예제

yn98 2024. 7. 3. 16:24

JAVA에서는 상속이라는 개념이 존재한다.

JAVA에서는 부모 클래스(상위 클래스)의 코드를 자식 클래스(하위 클래스)가  전부 '재사용'할 수 있다. 이를 상속이라고 한다.

상속이라는 개념을 사용하는 가장 큰 이유는 재사용을 할 수 있다는 점이다. 이는 유지보수 용이성을 극대화시키고, 이는 개발시간 단축과 개발비용 축소까지 연결된다.

 

가장 기본적으로, 클래스의 상속이 있다.

상속을 받을 때에는 "extends" 라는 키워드를 사용한다.

예를 들어, Animal이라는 클래스와, Cat이라는 클래스가 있고, Cat 클래스는 Animal이라는 클래스를 상속받는 경우, 다음과 같이 작성한다.

class Animal{
}
class Cat extends Animal{
}

두 클래스 모두 지금은 공백이지만, 내용이 있다면 Cat 클래스는 Animal 클래스 안에있는 모든 내용을 다 상속받는다.

아래는 직접 실습해본 예시이다.

package class02;

class Animal {
	String type;
	String name;
	Animal(String type){
		this(type, "무명");
		System.out.println("로그 01");
	}
	Animal(String type, String name){
		this.type=type;
		this.name=name;
		System.out.println("로그 02");
	}
	void hello() {
		System.out.println(this.type+" "+this.name);
	}
}
class Cat extends Animal{
	Cat(){
		this("나비");
		System.out.println("로그 03");
	}
	Cat(String name){
		super("고양이", name);
		System.out.println("로그 04");
	}
}



public class Test02 {
	
	public static void main(String[] args) {
		Cat 길고양이 = new Cat();
		Cat cat = new Cat("구동이");
		길고양이.hello();
		cat.hello();
	}

}

위 코드를 실행시키면 다음과 같은 내용이 출력된다.

위 코드를 보면, super() 라는 키워드가 존재한다.

자식클래스의 모든 생성자들은 가장 먼저 부모클래스의 기본생성자를 호출한다.(규칙임)

그렇기 때문에 부모클래스의 생성자를 작성하고, 자식클래스를 아직 구현하는 중이라면 컴파일오류가 나게된다.

이를 해결하기 위한 방법으로, 부모에게 클래스에게 존재하는 다른 생성자를 대신 사용하는 방법이 있다.

그러기 위해서는 위 코드처 super()키워드를 사용하면 된다.