Study/Java
Java - 상속_ 재정의 (Override)
서한성
2022. 7. 6. 12:17
상속에서 method를 활용하는 방법 중 Override를 알아보자
예시)
부모 클래스
public class Parent {
// 필드
int field1;
// 생성자(default - 생략 가능)
public Parent() {}
// 메소드
void method1() { System.out.println("method1이 실행됨"); }
void method2() { System.out.println("method2가 실행됨"); }
}
자식클래스 -> method1은 Override하고 method2는 하지 않는다.
public class Child extends Parent {
// 필드
int field2;
// 메소드 추가
@Override
void method1() {
super.method1();
System.out.println("method1 Override");
}
void method2() { System.out.println("method2 not Override"); }
}
위와 같이 method1은 Override어노테이션과 super키워드를 통해 Parent.method1을 Override 했고
method2는 이런 것들을 쓰지 않는다.
결과는 어떨까?
public class InheritanceExample {
public static void main(String[] args) {
Parent p1 = new Parent();
p1.method1();
System.out.println("\n");
System.out.println("ChildExample"); // 구분을 위해 한 줄 띄움
Child c1 = new Child();
c1.method1(); // p1.method1()에 Child 클래스에서 추가한 것이 모두 실행됨 -> Override
c1.method2(); // Child 클래스의 메소드만 실행
}
}

Child 객체에서 호출한 method1은 Parent 객체의 method1과 override한 실행문이 모두 실행되고,
method2는 Child 객체에서 호출한 메소드만 실행됐다.
정리하면 override는 둘 다, 하지 않으면 자식 것만!! 이라고 하면 될 듯 하다.