1. 오버라이딩이란?
- 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
2. 오버라이딩의 조건
- 조상클래스의 메서드와 '이름', '매개변수', '리턴타입'이 같아야 한다.
(jdk1.5부터 리턴타입을 자손 클래스의 타입으로 변경하는 것은 가능하도록 조건이 완화됨)
- 제한적 조건
- 접근제어자는 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.
- 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
- 인스턴스메서드를 static메서드 또는 그 반대로 변경할 수 없다.
3. super
- 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수
- 상속받은 멤버와 자신의 멤버가 이름이 같을 때 super를 붙여서 구별할 수 있음
- static메서드는 인스턴스와 관련이 없기 때문에 static메서드에서는 super를 사용할 수 없다.
- 조상 클래스의 메서드를 자손 클래스에서 오버라이딩한 경우에 super를 사용한다.
4. super()
- 조상 클래스의 생성자를 호출하는데 사용
- 자손 클래스의 인스턴스를 생성하면 조상 클래스의 인스턴스는 자동으로 생성되기에 조상 클래스 멤버의 초기화 작업이 필요 -> 자손 클래스의 생성자에서 조상클래스의 생성자가 호출되어야 함
- Object클래스를 제외한 모든 클래스의 생성자 첫 줄에 반드시 자신의 다른 생성자 또는 조상의 생성자를 호출해야 한다. (그렇지 않으면 컴파일러가 자동으로 'super()'를 추가)
java의 정석 chapter7