오버라이딩(Overriding)
- 부모Class에서 정의한 메서드를 자식Class에소 변경하는 것.
- 한마디로 자식Class에 재정의하는 것.
예제를 보자
public class AClass { Integer i; Integer j; Integer k; static int TEMP = 10; public void setOprands(int i, int j) { this.i = i; this.j = j; } // 오버라이딩 public void overRiding(){ System.out.println("A 클래스 오버라이딩"); } } public class BClass extends AClass{ // 오버라이딩 public void overRiding(){ System.out.println("B 클래스 오버라이딩"); } } public class JAVA_TEST { public static void main(String[] args) { AClass aClass = new AClass(); BClass bClass = new BClass(); aClass.overRiding(); bClass.overRiding(); } } | cs |
AClass(부모) overriding 메소드를 BClass(자식) overriding 메소드를 재정의 하고 있다.
오버라이딩을 하기 위해서는 조건이 있다.
- 메소드의 이름
- 메소드 매개변수의 숫자와 데이터 타입 그리고 순서
- 메소드의 리턴타입
만약 똑같은 코드가 중복으로 오버라이딩이 된다면 제거를 해야한다.
예제를 보자
public class AClass { Integer i; Integer j; Integer k; static int TEMP = 10; public void setOprands(int i, int j) { this.i = i; this.j = j; } // 오버라이딩 public void overRiding(){ System.out.println("오버라이딩 호출"); } } public class BClass extends AClass{ // 오버라이딩 public void overRiding(){ super.overRiding(); } } public class JAVA_TEST { public static void main(String[] args) { AClass aClass = new AClass(); BClass bClass = new BClass(); aClass.overRiding(); bClass.overRiding(); } } | cs |
AClass와 BClass의 overriding 메소드가 중복이라면 super를 사용하여 중복을 제거할 수 있다.
super를 사용함으로서 다시 부모클래스인 AClass의 overriding 메소드를 호출함으로 중복을 제거하였다.