티스토리 뷰
자바 - 바인딩(Binding)에 대해서 알아보기......... ( 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding) )
Kodong's blog 2025. 9. 13. 15:49오늘은 바인딩(Binding)에 대해서 알아볼것이다.
사실 자바에만 바인딩 개념이 있는 것은 아니다. 모든 언어에 있는 개념이다.
어쨌든 본론으로 들어가보자.
■ 바인딩(Binding)이란?
▶ 프로그래밍에서 변수, 함수, 또는 객체와 같은 식별자(identifier)를 메모리의 특정 주소나 실제 값에 연결하는 과정.
이해를 위해 예를 들어보자.
자바 코드에서 이렇게 썼다고 해보자.
Dog myDog = new Dog();
여기서 myDog이라는 변수 이름은 메모리 어딘가에 만들어진 Dog 객체와 연결된다.
이렇게 변수명과 실제 객체를 연결해주는 것이 바로 바인딩이다!!!
언어바다 바인딩의 종류는 다르다.
오늘은 내가 사용하고 있는 언어인 자바에서의 바인딩 종류에 대해서 알아보자.
자바에서 바인딩은 두 종류이다. 정적 바인딩과 동적 바인딩.
■ 정적 바인딩 (Static Binding ) 이란?
▶ 컴파일 시점에 연결이 이루어지는 것이다.
예시로 이해해보자! ( Gemini 형님 )
class Calculator {
// 오버로딩된 두 메서드
public int add(int a, int b) { return a + b; }
public double add(double a, double b) { return a + b; }
}
// 컴파일러는 이 코드만 봐도 어떤 add()를 호출할지 바로 알 수 있다!! ( 정적 바인딩 )
Calculator cal = new Calculator();
cal.add(10, 20); // int 타입의 add()가 호출될 것이라고 이미 결정된다!!
이렇게 컴파일러가 미리 정해놓는 것을 정적 바인딩이라고 한다!!!
( 사실 설명이 좀 부족하다. 추후 좀 더 공부하고 보완하도록 하겠다. )
■ 동적 바인딩( Dynamic Binding ) 이란?
▶ 런타임 시점에 연결이 이루어지는 것!
동적 바인딩은 다형성과 매우 밀접한 관련이 있다.
class Animal {
public void makeSound() {
System.out.println("동물 소리임");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("멍멍!");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("야옹!");
}
}
Animal myAnimal;
myAnimal = new Dog();
myAnimal.makeSound(); // 멍멍! (Dog의 메서드 호출)
myAnimal = new Cat();
myAnimal.makeSound(); // 야옹! (Cat의 메서드 호출)
이 코드가 있다고 하자.
여기서 myAnimal.makeSound()가 어떤 메서드를 호출할지는 myAnimal 변수가 실제로 어떤 객체(Dog인지, Cat인지)를 가리키는지에 따라 달라진다.
이것이 바로 동적 바인딩이다. 이것을 결정하는것이 프로그램이 실행될 때 결정되기에 동적 바인딩이라고 부른다.
( 이것도 추후에 설명을 보완하도록 하겠다 )
'Java' 카테고리의 다른 글
| 자바 - 가능한 모든 경로에는 return 문을 작성해줘야함!!!!!! (Missing return statement) (1) | 2025.09.25 |
|---|---|
| 자바 - Switch Expression 정리 (1) | 2025.09.17 |
| 자바 - 정적 초기화 블록, 인스턴스 초기화 블록 (1) | 2025.09.11 |
| 자바 - super 키워드 (0) | 2025.09.10 |
| 자바 - 변수타입 vs 실제 객체타입 (0) | 2025.09.10 |