자바[JAVA] – 9.상속(Inheritance)

상속?

상속(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)를 사용할 수 있다.

Leave a Comment