* 상속?
- 다른 클래스가 가지고 있는 멤버 필드 , 메소드 들을 새로 작성할 클래스에서 직접 만들지 않고 상속을 받음으로써 새 클래스가 자신의 멤버처럼 사용할 수 있는 기능
* 목적
클래스의 재사용이 가능하고, 연관된 일련의 클래스들에 대하여 공통적으로 규약을 정의할 수 있다.
코드의 중복을 제거하여 불필요한 반복을 줄였기 때문에 프로그램의 생산성과 유지보수에 크게 기여한다.
* 특징
1. 모든 클래스는 Object 클래스의 후손
Object 클래스가 제공하는 메소드를 오버라이딩하여 메소드 재구현 가능
2. 부모클래스의 생성자 , 초기화 블록은 상속 안 됨
자식 클래스 생성 시 , 부모 클래스 생성자가 먼저 실행
자식 클래스 생성자 안에 부모 클래스 생성자를 호출하고 싶으면 super() 활용
3. 부모의 private 멤버는 상속은 되지만 직접 접근 불가
자식 객체 생성 시에 부모의 필드 값도 전달 받은 경우 , 자식
생성자 안에서 부모의 private 필드에 직접 접근하여 대입 불가
super() 이용하여 전달받은 부모 필드 값을 부모 생성자 쪽으로 넘겨 생성하거나
setter, getter 메소드를 이용하여 접근
* 상속 문법
- 'extends' 예약어를 사용
[접근제한자] class 클래스 명 extends 클래스명 {}
* super()
부모 생성자를 호출하는 메소드로 기본적으로 후손 생성자에 부모 생성자 포함되어 있음 . 후손 객체 생성 시에는 부모부터 생성이 되기 때문에 후손 클래스 생성자 안에는 부모 생성자를 호출하는 super() 가 첫 줄에 존재함 부모 생성자가 가장 먼저 실행되어야 하기 때문에 명시적으로 작성 시에도 반드시 첫 줄에만 작성
매개변수 있는 부모 생성자 호출은 super( 매개변수 )를 넣으면 됨
* super.
상속을 통한 자식 클래스 정의 시 해당 자식 클래스의 부모 객체를 가리키는 참조변수로 자식 클래스 내에서 부모 클래스 객체에 접근하여 필드나 메소드 호출 시 사용
* 오버라이딩(Overriding)
자식 클래스가 상속 받은 부모 메소드를 재작성 하는 것
- 오버라이딩 성립 조건
메소드 이름 동일, 매개변수의 개수&타입 동일, 리턴 타입 동일, private 메소드 오버라이딩 불가
댓글