on
자바 중급 027. 오버라이딩(overriding)-재정의
자바 중급 027. 오버라이딩(overriding)-재정의
반응형
안녕하세요. 스마트 팩토리입니다
자바 중급 027. 오버라이딩(overriding) 에 대해 알아보겠습니다.
1.오버라이딩(overring)
가. 오버라이딩
- 상속 받은 조상의 메소드를 해당 클래스에 맞게 변경하는 것
- 조상클래스에서 상속받은 메서드를 자손한테 맞게끔 구현부를 수정하는 것
- 상속을 받을때 원하는 부분만 상속을 받을 수 없으며, 필요하다면 오버라이딩을 한다.
나. 오버라이딩 예시
<>
부모 클래스의 멤버 변수는 x,y 이고
자식 클래스의 멤버 변수는 z
메인 클래스에서 자식 클래스의 객체를 활용하여 인스턴스 값을 5,10,20을 지정하고 출력을 해 보니
부모 클래스의 메소드 부분만 실행되어 해당 부모 클래스로 상속 받은 멤버 변수 값만 출력하게 됩니다.
그래서 자식 클래스에서 주석 부분을 오버라이딩 하게 됩니다.
package ex07_01;
class PapaPoint{
int x;
int y;
String getLocation() {
return "(x,y) = "+"( "+x+","+ y + ")";
}
}
class SonPoint extends PapaPoint{
int z;
// String getLocation() {
// return "(x,y,z) = "+"( "+x+","+ y +","+z+ ")";
// }
}
public class OverrideTest {
public static void main(String[] args) {
SonPoint p1=new SonPoint();
p1.x=5;
p1.y=10;
p1.z=20;
System.out.println(p1.getLocation());
}
<< 오보라이딩 후 >>
자식 클래스의 메소드 부분을 부모 클래스에 첨가하여 작성하였습니다. 그 결과
System.out.println(p1.getLocation());
부모클래스의 메소드 값이 아닌 자식 클래스의 메소드 값이 출력되는 것을 볼 수 있습니다.
<>
package ex07_01;
class PapaPoint{
int x;
int y;
String getLocation() {
return "(x,y) = "+"( "+x+","+ y + ")";
}
}
class SonPoint extends PapaPoint{
int z;
String getLocation() {
return "(x,y,z) = "+"( "+x+","+ y +","+z+ ")";
}
}
public class OverrideTest {
public static void main(String[] args) {
SonPoint p1=new SonPoint();
p1.x=5;
p1.y=10;
p1.z=20;
System.out.println(p1.getLocation());
}
}
반응형
from http://sf2020.tistory.com/87 by ccl(A) rewrite - 2021-09-12 23:26:52