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;
}
}
⇒
getLocation() Point(조상)에 있는 것을 그대로 쓰면 z를 쓰지못하니 오버라이딩해서 z를 추가 내용(=구현부)만 변경가능하다.
class Point{
int x;
int y;
String getLocation(){
return "x : " + x +", y : " + y;
}
}
class Point3D extends Point{
int z;
}
public class OverrideTest{
public static void main(Sting[] args){
Point3D p = new Point3D();
p.x = 3;
p.y = 4;
p.z = 5;
System.out.println(p.getLocation());
}
}
⇒
x : 3, y : 4
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(Sting[] args){
Point3D p = new Point3D();
p.x = 3;
p.y = 4;
p.z = 5;
System.out.println(p.getLocation());
}
}
class Point{
int x;
int y;
// Object클래스의 toString()을 오버라이딩
// 밑에 코드에 public이 붙는이유는
// Object클래스의 toString()에 public이 붙어있어 그것을 유지하기위해 붙임
// 오버라이딩을 할려면 선언부가 똑같아야 하기때문
public String toString(){
return "x : " + x +", y : " + y;
}
}
public class OverrideTest{
public static void main(Sting[] args){
Point p = new Point();
p.x = 3;
p.y = 4;
System.out.println(p.toString());
System.out.println(p);
}
}
⇒
x : 3, y : 4
x : 3, y : 4
⇒ 참조변수.toString()을 하게 되면 오버라이딩전에는 참조변수의 주소가 출력이 된다.