부모 클래스의 멤버(필드, 메서드)를 자식 클래스에서 물려받아 자신의 멤버처럼 사용하는 것 (extends 키워드 : 자식 클래스에서 가지게 되는 멤버의 양이 확장됨)
상속의 목적 : 클래스의 재사용, 연관된 일련의 클래스들에 대한 공통적인 규약 정의
상속의 장점
Object 클래스는 모든 클래스의 부모 클래스
Object 클래스가 제공하는 메서드를 오버라이딩하여 메서드 재구현 가능
예) java.lang.String 클래스의 equals( )와 toString( )
🌼 Object 클래스
: 모든 객체가 가져야 할 공통적인 기능을 추상화하여 모아둔 최상위 클래스
부모 클래스의 생성자, 초기화 블록은 상속 불가
자식 클래스를 생성하면 부모 클래스의 생성자가 먼저 실행됨
🧶 부모 클래스 접근 : super( ) 메서드 이용
부모의 private 멤버는 상속은 가능하지만 직접 접근은 불가
🧶 super( ) 메서드를 이용하여 전달 받은 부모 필드값을 부모 생성자 쪽으로 넘겨서 생성
🧶 getter, setter 메서드를 이용하여 접근
final 클래스는 부모 클래스가 될 수 없음 (상속 불가)
부모 클래스의 final 메서드는 상속은 가능하지만 오버라이딩은 불가
final 클래스 예 : String
단일 상속 (Single Inheritance)
: 클래스 간의 관계가 다중 상속보다 명확하고 신뢰성 있는 코드 작성
다중 상속 (Multiple Inheritance)
: C++에서 가능한 기능으로, 여러 부모 클래스로부터 상속을 받으며
복합적인 기능을 가진 클래스를 쉽게 작성 가능
💥서로 다른 클래스로부터 상속 받은 멤버 간의 이름이 같은 경우
어떤 클래스에서 상속 받은 멤버인지 구분할 수 없는 문제가 발생하기 때문에
자바에서는 클래스 간의 다중 상속을 지원하지 않음