부모클래스의 매서드를 자식클래스가 가져와 사용하되
이름과 매개변수는 그대로 두고 내용만 자식클래스의 상황에맞게 재정의하는것
바로 예제를 보자(계산기)
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 |