11-1. (보충) 상속
단일 상속(Single Inheritance)
C++ 에서는 다중 상속을 허용하지만, 자바는 단일 상속(Single Inheritance)만을 허용한다는 규칙을 따릅니다.
그렇다면 왜 자바는 다중상속을 허용하지 않을까요?
class C extends A, B
예를 들어 위처럼 C라는 클래스가 A 클래스와 B 클래스를 동시에 상속받는다고 해보겠습니다. 그런데 A 클래스와 B 클래스 내에는
Number라는 이름이 같은 메서드가 각각 존재하고 있고, 이 Number 메서드는 서로 다른 로직으로 구현되어 있습니다.
이때 A 클래스의 Number 메서드를 상속 받아 사용해야 할지, B 클래스의 Number 메서드를 상속받아 사용할지에 대한 물음표가
생기게 될 것입니다. 단순 두 클래스를 상속 받는 상황이 아닌 조상 클래스를 상속 또한 이어지고 있다면 굉장히 복잡한 상황에
빠지게 될 것입니다. 이러한 상황에 대비해 자바는 단일 상속만을 채택하는 것입니다!
(이후 다룰 인터페이스 혹은 앞서 배운 포함을 통해서 다중 상속과 유사하게 구현할 수 있습니다!)
Object 클래스
우리가 앞서 상속 받을 클래스를 부모 클래스라고 하였습니다. 그런데 사실 이 부모 클래스 정확히는 모든 클래스가 어떠한 클래스의
상속을 받고 있습니다. 그 클래스는 바로 Object 클래스라고 합니다. 즉 모든 클래스의 조상인 셈입니다.
기본 생성자와 마찬가지로 컴파일러가 우리가 모르는 사이에 자동으로 다음과 같이 괄호 부분처럼 상속을 받도록 해줍니다.
class A (extends Object) {
중략
}
이 Object 클래스에는 11개의 메서드가 포함되어 있습니다만, Object 클래스에 대해서는 나중에 등장하게 될 때 자세하게
다루도록 하겠습니다.