오버라이딩(overriding)
class Point {
int x;
int y;
String getLocation() {
return "x : " + x + ", y : " + y;
}
}
class Point3D extend Point {
int z;
String getLocation() {
//오버 라이딩
//내용만 변경 가능, 구현부 {} / 선언부 변경 불가
return "x : " + x + ", y : " + y, z : " + z;
}
}
ex.OverrideTest
class Point {
int x;
int y;
String getLocation() {
return "x : " + x + ", y : " + y;
}
}
class Point3D extend 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 Point();
p.x = 3;
p.y = 5;
p.z = 7;
System.out.println(p.getLocation());
}
}
오버라이딩의 조건
class point {
int x;
int y;
String getLocation() {
}
}
class Point3D extends Point {
int z;
String getLocation() {
}
}
//선언부(반환타입, 메서드이름, 매개변수 목록)일치
오버로딩 vs 오버라이딩
오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것(new)
오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것(change, modify)
class Parent {
void parentMethod() {
}
class Child extend Parent {
void parentMethod() {} // 오버라이딩
void parentMethod(int i) {} //오버로딩
void childMethod() {} //메서드 정의
void childMethod(int i) {} //오버로딩
void childMethod() {} //중복 정의