[객체지향] 동적바인딩과 추상화

송송승현's avatar
Nov 12, 2024
[객체지향] 동적바인딩과 추상화
 

동적 바인딩

💡
프로그램 실행 시에 메서드 호출을 해결하는 과정
객체지향의 특징인 다형성을 가능하게 함

예제 코드

abstract class Animal { abstract void sound(); } class Dog extends Animal { @Override void sound() { System.out.println("Woof Woof!"); } } class Cat extends Animal { @Override void sound() { System.out.println("Meow Meow!"); } } public class Main { public static void main(String[] args) { Animal myDog = new Dog(); Animal myCat = new Cat(); myDog.sound(); // Woof Woof! myCat.sound(); // Meow Meow! } }
 
  • myDog와 myCat 변수는 실행 시점에 실제 객체 타입에 sound() 메서드를 호출
  • 컴파일 시점에는 어떤 메서드가 호출될지 결정 X, 실행 시점에 결정 O

추상화

💡
복잡한 시스템을 단순화하여 중요한 부분만을 표현하는 것
추상 클래스와 인터페이스를 통해 구현

예제 코드

abstract class Animal { abstract void sound(); } class Bird extends Animal { @Override void sound() { System.out.println("Tweet Tweet!"); } } class Fish extends Animal { @Override void sound() { System.out.println("Blub Blub!"); } }
  • Animal 클래스는 추상 클래스, sound() 메서드는 추상 메서드
  • 각 서브 클래스가 해당 메서드를 구현하도록 강제
  • 추상화를 통해 공통적인 인터페이스를 정의, 세부 구현을 서브 클래스에 맡김
 
Share article

송승현의 블로그