1. 동적 바인딩(Dynamic Binding)
- 프로그램 실행 시 어떤 메서드를 호출할지 결정하는 것을 의미합니다.
- 컴파일 시점이 아니라 런타임 시점에 메서드 호출이 바인딩 됩니다.
→ 다형성 구현
소스 코드 예시
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog();
myAnimal.sound(); // Dog barks 출력
}
}
- 부모 메서드를 오버라이드(override)할 경우 부모 메서드의 내용은 무효화되고 자식 메서드의 내용이 실행됩니다.
2. 추상화(Abstraction)
- 복잡한 시스템을 간단하게 표현하는 방법입니다.
- 구체적인 세부 사항을 감추고, 중요한 특성이나 기능만을 드러냅니다.
소스 코드 예시
interface Animal {
void sound();
}
class Dog implements Animal {
public void sound() {
System.out.println("Dog barks");
}
}
- Animal 인터페이스에 정의된 sound() 메서드는 구체적인 내용이 없습니다.
- Animal을 구현한 Dog 클래스에서 구체적인 내용을 작성합니다.
Dog 클래스에서 sound()의 접근 제한자가 public인 이유
- 인터페이스에 정의된 메서드는 기본적으로 public
- 이를 구현할 경우 반드시 동일한 접근 제한자로 작성
Share article