본문 바로가기
Java

자바 중급 027. 오버라이딩(overriding)-재정의

by Smart Factory in 2020 2021. 9. 12.
728x90
반응형

안녕하세요. 스마트 팩토리입니다 
자바 중급 027. 오버라이딩(overriding) 에 대해 알아보겠습니다. 

1.오버라이딩(overring)

가. 오버라이딩

- 상속 받은 조상의 메소드를 해당 클래스에 맞게 변경하는 것
- 조상클래스에서 상속받은 메서드를 자손한테 맞게끔 구현부를 수정하는 것
- 상속을 받을때 원하는 부분만 상속을 받을 수 없으며, 필요하다면 오버라이딩을 한다. 

 

나. 오버라이딩 예시

<<OverrideTest.java 실행 클래스 >>

 

부모 클래스의 멤버 변수는 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()); 

부모클래스의 메소드 값이 아닌 자식 클래스의 메소드 값이 출력되는 것을 볼 수 있습니다. 

<<String 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());
}
}

 

 

 

 

728x90
반응형

댓글