JAVA :: 메소드 오버라이딩

smi·2021년 1월 22일
2

JAVA (자바)

목록 보기
2/62
post-thumbnail

📝 메소드 오버라이딩

💬 자식 클래스에서 부모 클래스에 선언된 메소드를 중복 작성하여 부모 클래스에 작성된 메소드를 무력화시키는 것이다.

💡 메소드 오버라이딩 목적

💬 부모 클래스에 선언된 메소드를 서브 클래스에서 필요한 내용으로 새로 구현하기 때문에, 하나의 인터페이스에 서로 다른 내용을 구현할 수 있어 객체 지향의 다형성을 실현할 수 있다.

💡 메소드 오버라이딩 방법

자식 클래스에 오버라이딩한 메소드는 반드시 부모 클래스에 작성된 메소드의 이름, 리턴 타입, 매개 변수 리스트가 모두 같도록 작성되어야 한다.

⚠ 오버라이딩하며 접근 제한을 더 강하게 할 수 없다.

💡 동적 바인딩

💬 실행할 메소드를 컴파일 시에 결정하지 않고, 실행 시에 결정한다.

쉽게 말해, 여러 클래스에 오버라이딩된 메소드를 실행시켰을 때, 메소드를 처음에 가지고 있었던 클래스가 아닌 상속한 클래스의 오버라이딩한 메소드가 실행되었을 때 동적 바인딩이라고 한다.

때문에 메소드 오버라이딩을 할 경우, 항상 자식 클래스의 오버라이딩한 메소드가 실행된다.

👉예시
class Parent {
    public void overriding() {
        System.out.println("Parent method");
    }
}

class Child extends Parent {
    public void overriding() { //메소드오버라이딩
        super.overriding();
        System.out.println("Child method");
    }
}

public class Example {
    public static void main(String[] args) {
        Child child = new Child();
        child.overriding();
    }
}

👉결과

Child method


💡 정적 바인딩

💬 super 키워드를 이용하여 오버라이딩한 메소드가 아닌 부모 클래스의 필드와 메소드 모두 접근할 수 있다.

super.부모 클래스의 멤버

👉예시

👉결과
Parent method
Child method

Reference

명품 자바 에션셜(2014, 황기태)

profile
공부한 거 올려요 :)

0개의 댓글