ch7-7 오버라이딩(overriding)
- 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 = 메서드 오버라이딩
override v. 덮어쓰다
class Point { // 2차원 좌표 위치
int x;
int y;
String getLocation() {
return "x : "+ x + ", y: " + y;
}
}
class Point3D extends Point { // 3촤원 좌표 상의 점
int z;
String getLocation() { // 조상의 getLocation()을 오버라이딩(내용만 변경가능)
// 선언부는 변경불가, {} 구현부만 변경가능
return "x :" + x + ", y:" + y + "z :" + z;
}
}
class Point { // 조상
int x;
int y;
String getLocation() {
return "x:"+ x +", y:"+ y;
}
}
class Point3D extends Point {
int z;
// 조상의 getLocation()을 오버라이딩
String getLocation() {
return "x:"+ x +", y:"+ y+", z:"+ z;
}
}
public class OverrideTest {
public static void main(String[] args) {
Point3D p = new Point3D();
p.x = 3;
p.y = 5;
p.z = 7;
System.out.println(p.getLocation());
}
}
class Point extends Object {
int x;
int y;
Point (int x, int y) { // 생성자 초기화
this.x = x;
this.y = y;
}
// Object 클래스의 toString()을 오버라이딩
public String toString() {
return "x:"+ x +", y:"+ y;
}
}
public class OverrideTest {
public static void main(String[] args) {
//간결한 코드로 변경
Point p = new Point(1,2);
System.out.println(p);
//복잡
//Point p = new Point(1,2);
//p.x = 3;
//p.y = 5;
//System.out.println("p.x =" + p.x);
//System.out.println("p.y =" + p.y);
}
}
}
ch7-8 오버라이딩의 조건
1. 선언부가 조상 클래스의 메서드와 일치해야 한다.
- 선언부 (반환타입, 메서드이름, 매겨변수 목록) 일치
2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 접근제어자 (public, private, protected, default)
3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 있다. <- 8장
- IOException, SQLException, ...
ch7-9 오버로딩 vs. 오버라이딩
- 오버로딩(overloading) : 기존에 없는 (이름이 같은) 새로운 메서드를 정의하는 것 (new) = 상속과 관련 X
- 오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것 (change, modify)
class Parent {
void parentMethod() { }
}
class Child extends Parent {
void parentMethod() {} // 1. 오버라이딩
void parentMethod(int i) {} // 2. 오버로딩
void childMethod() {} // 3. 메서드 정의
void childMethod(int i) {} // 4. 오버로딩
void childMethod() {} //5. 중복정의 - 에러
}
'Dev > Java' 카테고리의 다른 글
[Java] 자바의 정석 기초편 ch7-12~14 패키지(package), 클래스 패스 (0) | 2022.06.13 |
---|---|
[Java] 자바의 정석 기초편 ch7-10,11 참조변수 super, 생성자 super() (0) | 2022.04.25 |
[Java] 자바의 정석 기초편 ch7-5,6 단일 상속, Object 클래스 (0) | 2022.04.25 |
[Java] 자바의 정석 기초편 ch7-3,4 클래스 간의 관계, 상속과 포함 (0) | 2022.04.22 |
[Java] 자바의 정석 기초편 ch7-1,2 상속 (0) | 2022.04.22 |