728x90
반응형
💡 오버라이딩
# 오버라이딩(Overriding) - 상속받은 메소드의 내용을 변경하는 것
: 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것을 말한다.
💬조건
1. 선언부가 같아야 한다.(이름, 매개변수, 리턴타입)
2. 접근제어자를 좁은 범위로 변경할 수 없다.
- 조상의 메소드가 protected라면, 범위가 같거나 넓은 protected나 public으로만 변경할 수 있다.
3. 조상클래스의 메소드보다 많은 수의 예외를 선언할 수 없다.
💡 참조 변수
# 참조변수
* this - 인스턴스 자신을 가리키는 참조변수
* super - this와 같음. 조상의 멤버와 자신의 멤버를 구별하는 데 사용
- Object클래스를 제외한 모든 클래스의 생성자 첫 줄에는 생성자를 호출해야 한다.
그렇지 않으면 컴파일러가 자동적으로 'super();' 를 생성자의 첫 줄에 삽입한다.
💬super
# super() 사용
- 자손클래스에 기본 생성자를 생성한다.
ex) Point() {}
- 조상클래스를 호출할 때 매개변수를 넣는다
ex) super(10, 20);
🚩예제
x와 y와 z의 좌표를 구해서 각각의 위치를 출력하는 문제
- Point 클래스에서 x, y 좌표 출력
- Point3D에서 Point 클래스를 상속받아 getLocation() 메소드를 오버라이딩하여 z 좌표를 출력
💾소스코드
public class Pointer {
public static void main(String[] args) {
Point p1 = new Point(1, 3);
System.out.println(p1.getLocation());
Point3D p2 = new Point3D(1,3,5);
System.out.println(p2.getLocation());
}
}
class Point3D extends Point{
int z;
Point3D(int x, int y, int z) {
// super(); -- 조상클래스의 기본 생성자. 조상클래스에 기본 생성자가 생성되어있어야 한다.
// this.x = x;
// this.y = y;
super(x, y);
this.z = z;
}
@Override
String getLocation() {
// TODO Auto-generated method stub
return super.getLocation() + ", " + z;
}
}
class Point {
int x;
int y;
Point() {
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
String getLocation() {
return x + ", " + y;
}
}
728x90
반응형
'Language > JAVA' 카테고리의 다른 글
JAVA 6일차 - toString 메소드, 상속 예제 연습 (0) | 2022.06.27 |
---|---|
JAVA의 정석 3판 - 두 점 사이 거리 계산 (0) | 2022.06.26 |
JAVA의 정석 3판 - 객체지향 프로그래밍 연습문제(3) (0) | 2022.06.24 |
JAVA 5일차 - 오버로딩 / 생성자 (0) | 2022.06.24 |
JAVA 5일차 - 변수와 메소드 / 재귀함수 (0) | 2022.06.24 |
댓글