학습할 것 (필수)

자바 상속의 특징

상속이란 어떤 클래스가 다른 클래스를 확장 시키는 것이다. 이 때 상속받는 클래스를 서브 클래스(혹은 derived class, extended class or child class)라고 하고 상속 당하는(?) 클래스를 수퍼 클래스(혹은 base class or parent class) 라고 부른다. 아래는 상속의 간단한 예시다.

class Super {
  String name;

  Super(String name) {
    this.name = name;
  }
}

class Sub extends Super {
  int age;

  Sub(String name, int age) {
    super(name);
    this.age = age;
  }
}

상속에서 서브 클래스는 자신의 필드나 메서드와 더불어 수퍼 클래스의 public, protected(수퍼와 서브가 같은 패키지에 있다면 package-private까지) 접근제어자에 한해 멤버(필드와 메서드)를 포함하여 가진다. (생성자는 멤버가 아니므로 상속되지 않는다) 이러한 상속의 특징은 수퍼 클래스를 재사용할 수 있다는 장점을 가진다. 만약 두 클래스에 중복되는 필드나 메서드가 있다면 하나의 수퍼 클래스를 추출해 두 클래스에서 상속받으면 코드가 훨씬 간결해진다.

자바 상속의 특징은 다중상속을 허용하지 않는다. 한 클래스는 하나의 클래스만 상속받을 수 있다는 것이다. 상속은 여러 겹으로 이루어 질 수 있지만(A를 상속받은 B를 C가 상속받을 수 있음), 한번에 여러 클래스를 상속받지는 못한다. (-> 인터페이스를 이용한다면 somewhat 가능하지만 이건 8주차에)

메소드 오버라이딩

super 키워드

super 키워드를 사용하면 수퍼 클래스의 필드와 메서드에 접근할 수 있다.