java/객체지향

11-1. (보충) 상속

VanillaSky7 2023. 1. 16. 23:23

단일 상속(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 클래스에 대해서는 나중에 등장하게 될 때 자세하게

 

다루도록 하겠습니다.