기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것
자식이 부모의 것을 물려받는 것
상위 클래스(super class) : 상속하는 클래스
하위 클래스(sub class) : 상속받는 클래스
기존에 작성된 클래스를 재사용할 수 있습니다.
공통적인 기능을 부모 클래스에 추가해주면 상속받은 여러 개의 자식 클래스에서 사용이 가능하기 때문에 확장성 또한 용이하다.
코드의 중복을 피해 유지 보수를 편하게 한다.
클래스 간에 계층 구조를 형성해서 다형성(구현 부분을 변경하는데 있어서 자유로움을 준다)을 준다.
부모 클래스의 모든 특성을 물려받아 새롭게 작성된 클래스
class 자식클래스 extend 부모클래스 { ... }
일반화(Generalization) : 하위 클래스에서 상위 클래스를 정의
구체화(Realization) : 상위 클래스에서 하위 클래스를 정의
상속 받은 메소드를 재정의할 때 사용
오버라이딩(overriding) 사전적 의미 : ~보다 우선하다
부모 클래스의 함수를 재정의 하고 싶을 때 그 함수를 자식 클래스에서 override 메소드를 통해 재정의 할 수 있다.
하위 클래스에서 메서드가 재정의되면 상위 클래스의 원래 메서드는 하위 클래스의 메서드가 우선적으로 참조되도록 은닉된다.
메서드의 내용(기능)만을 수정해서 다시 정의
같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
객체지향의 다형성(polymorphism)과 관련된 기술
하나의 메서드명으로 다양한 연산을 수행할 수 있다.
메서드는 같은 클래스 내에 있어야 하며 같은 이름을 가져야 한다.
메서드는 매개 변수의 개수나 자료형이 서로 달라야 한다.
다중 정의
하위 클래스에서 상위 클래스로부터 상속받은 멤버를 참조할 때 사용하는 참조 변수
상위 클래스로부터 상속받은 멤버는 하위 클래스 자신의 멤버이기도 하므로 super 대신 this 사용을 권장한다.
하지만 은닉된 상위 클래스의 속성이나 메서드를 참조하려면 하위 클래스 내에서 super을 사용해야 한다.