오버라이딩 : 조상클래스로 부터 상속받은 메서드의 내용을 변경하는 것
class Point {
int x;
int y;
String getLocation() {
return "x :" + x + ", y :"+y;
}
}
class Point3D extends Point{
int z;
String getLocation() {//선언부가 일치해야한다.
return "x :" + x + ", y :"+ y + ", z:" + z;
}
}
오버라이딩 조건 3가지
- 선언부가 일치해야한다.
- 자손클래스에서 오버라이딩하는 메서드는 조상클래스의 메서드와 이름이 같아야한다.(
- 매개변수가 같아야 한다.
- 변환타입이 같아야 한다.지
- 접근 제어자는 조상클래스의 메서드보다 좁은 범위로 변경 할 수 없다.
- 조상클래스의 메서드보다 많은 수의 예외를 선언 할 수 없다.
※인스턴스 메서드를 static 메서드로 또는 그 반대로 변경시 별개의 메서드를 정의한 것이지 오버라이딩이 아니다.
오버라이딩과 오버로딩의 차이
- 오버로딩 : 기존에 없는 새로운 메서드를 정의
- 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것
super : 자손클래스에서 조상 클래스로 부터 상속 받은 멤버를 참조하는데 사용되는 참조변수
super() : this()와 마찬가지로 super()역시 생성자이며 조상클래스의 생성자를 호출하는데 사용, 자손 클래스의 인스턴스 생성시, 자손의 멤버와 조상의 멤버가 합쳐진 하나의 인스턴스 생성
'IT > Java' 카테고리의 다른 글
Polymorphism (0) | 2019.06.26 |
---|---|
제어자 (0) | 2019.06.25 |
상속, 포함 관계 (0) | 2019.06.24 |
생성자 (0) | 2019.06.23 |
Overloading (0) | 2019.06.23 |
댓글