바인딩
프로그램에 사용된 구성 요소의 실제 값 또는 프로퍼티를 결정짓는 행위
1. 정적바인딩
2. 동적바인딩
- 메서드를 호출할 때 발생
- runtime(실행시점)에 따라 결정
3. 코드
class Car {
int price=10;
public void drive() {
System.out.println("주행합니다.");
}
public static void stop() {
System.out.println("멈춥니다.");
}
}
class SuperCar extends Car{
int price=100;
@Override
public void drive() {
System.out.println("매우 빠르게 주행합니다.");
}
public static void stop() {
System.out.println("빠르게 멈춥니다.");
}
}
public class Polymorphism {
public static void main(String[] args) {
SuperCar sp1=new SuperCar();
System.out.println(sp1);
System.out.println(sp1.price);
sp1.drive();
sp1.stop();
Car sp2=new SuperCar();
System.out.println(sp2);
System.out.println(sp2.price);
sp2.drive
sp2.stop();
}
SuperCar타입을 가르키는 SuperCar참조변수
poly.SuperCar@2a139a55
100
매우 빠르게 주행합니다.
빠르게 멈춥니다.
SuperCar타입을 가르키는 Car참조변수
poly.SuperCar@15db9742
10
매우 빠르게 주행합니다.
멈춥니다.
- 스태틱 메서드,인스턴스 변수는 변수 선언 시점(컴파일 시점)에 변수의 타입기준으로 결정된다.
- 인스턴스 메서드는 실행시점(호출시점)에 실제 가지고 있는 타입기준으로 결정된다.
정말 잘 읽었습니다, 고맙습니다!