childClass extends parentClass
public class Dog extends Animal { ... }
Dog class는 Anima class를 상속받았다. 즉, Dog는 Animal의 하위 개념이라고 할 수 있겠다. 이런 경우 Dog 는 Animal에 포함되기 때문에 개는 동물이다라고 표현 할 수 있다.
자바는 이러한 관계를 IS-A 관계라고 표현한다. 즉 "Dog is a
Aniaml"과 같이 말할 수 있는 관계를 IS-A관계라고 한다.
이렇게 IS-A관계(상속관계)에 있을 때 자식 객체는 부모 클래스의 자료형인 것처럼 사용할 수 있다.
즉 다음과 같은 코딩이 가능하다.
Animal dog = new Dog();
하지만 이 반대의 경우, 즉 부모 클래스로 만들어진 객체를 자식 클래스의 자료형으로는 사용할 수 없다.
다음의 코드는 컴파일 오류가 발생한다.
Dog dog = new Animal();
부모클래스의 메소드를 자식클래스가 동일한 형태로 또 다시 구현하는 행위를 메소드 오버라이딩(Method Overriding)이라고 한다.
다른 매개변수를 가진 같은 이름의 함수를 만드는 것을 메소드 오버로딩(Method Overloading)이라 한다.
자바는 기본적으로 다중 상속을 지원하지 않는다. 하지만 방법이 있다.
참고 : Java and Multiple Inheritance | GeeksforGeeks