본문 바로가기
(혼) (공) (자)

상속-오버라이딩

by 만석이 2024. 1. 12.
부모클래스의 매서드를 자식클래스가 가져와 사용하되 
이름과 매개변수는 그대로 두고 내용만 자식클래스의 상황에맞게 재정의하는것

 

 

바로 예제를 보자(계산기)

public class Calculator {

public int getResupt(int x,int y) {
return -1;
}
}


public class CalMinus extends Calculator {

@Override
public int getResupt(int x,int y) {
return x-y;
}
}

public class CalPlus extends Calculator{

@Override
public int getResult(int x,int y) {
return x+y;
}
}



public class CalMain {
public static void main(String[] args) {


Calculator cp = new CalPlus();
Calculator cm = new CalMinus();

System.out.println("Calplus:"+cp.getResupt(5, 3));
System.out.println("CalMinus:"+cm.getResupt(7, 9));

}
}

 

Calculator 클래스에 getResult매서드를 만들었다. 그리고 -1을 반환한다.

 

CalMinus   클래스는 Calculator 클래스를 상속는다

 

바로 여기서 @Override가 나오게된다.

 

 어노테이션 기능을 가지고있는 일종의 주석 이다.

 

Override 어노테이션
   아래정의된 메서드가 오버라이딩된 메서드라는것을 알려준다.

 

 

 

 

CalMinus    클래스는 부모 클래스의 getResult메서드를 사용하는데 부모의 getResult매서드는 -1을 반환한다.

                   하지만 CalMinus 클래스는 x와y의 빼기를 하는 매서드가 필요하다. 그래서 부모의 getResult를 수정해야한다.

 

                  @Overrride를 사용하면 새로운 매서드를 만들지않고 부모의 매서드를 그대로 쓸수있다.(이름이 같아야한다.) 

                 

                 그래서 각각  CalMinus  와 CalPlus 두개의 클래스에 오버라이딩을 사용하면 main에서 x, y 값을 각각 받은다음                   getResult 메서드가 실행된다. 

 

                  Calculator cp = new CalPlus();

             

                  자식 클래스는 부모 클래스에 포함 되기에 이렇게도 사용할수있다. 

 

'(혼) (공) (자)' 카테고리의 다른 글

Static  (0) 2024.01.12
객체지향-오버로딩  (0) 2024.01.12
상속  (0) 2024.01.12
Class - 매개변수 생성자 _this  (0) 2024.01.09
Class-생성자  (1) 2024.01.08