상속?
상속(Inheritance)은 부모 클래스(Super Class)의 멤버를 자식 클래스(Sub Class)가 똑같이 갖는 것을 의미한다.
즉 코드의 재사용률을 높여주고 관리도 쉬워진다.
또한 부모에게서 받은 코드를 수정하여 사용할 수도 있다.
상속을 하기 위해서는 ‘exthends’ 라는 명령어를 선언하면 된다.
+
부모 클래스(Super Class)는 상속을 해주는 상위 클래스이다.
자식 클래스(Sub Class)는 상속을 받는 하위 클래스이다.
Java
public class Parent {
String string;
public Parent(String string){ // 생성자 생성
this.string = string;
}
public void print(String str){ // print라는 메서드를 생성
System.out.println.("It's a " + str + " Class.");
}
}
Java
public class Child extends Parent { // extends를 사용하여 Parent를 상속 받음
String string;
public Child(String parent, String string){ // 생성자 생성
super(parent); // super를 사용하여 부모 클래스를 초기화
this.string = string;
}
@Override
public void print(String str){
super.print(str); // super를 사용하여 부모 클래스의 print 메서드를 사용
System.out.println(super.string + " is a member of Parent Class."); //super를 사용하여 부모 클래스의 있는 String parent를 사용
}
}
Java
public static void main(String[] args){
Parent parent = new Parent("Parent");
Child child = new Child("Parent", "Child");
parent.print(parent.string);
System.out.println();
child.print(child.string);
}
자식 클래스는 부모 클래스의 멤버를 가져올 때 super(); 라는 명어어를 사용한다.
@Override(오버라이딩)은 재정의라는 의미로 부모 클래스의 메서드를 자식 클래스에서 수정할 때 사용한다.
하지만 부모 클래스의 private는 가져올 수 없다.
또한 다른 패키지에 있다면 접근 제어자가 default일 때 다른 패키지에서 사용 불가하므로 사용할 수 없다.
자바는 또한 다중 상속이 제한된다.
따라서 무조건 한 개의 부모 클래스만 상속받을 수 있다.
이를 보안하기 위해 인터페이스(Interface)를 사용할 수 있다.