2014년 7월 30일 수요일

[자바다형성기초교육]자바정적/동적 바인딩(JAVA static/early biding, dynamic/late biding) 메소드에 대한 호출을 메소드...

[자바다형성기초교육]자바정적/동적 바인딩(JAVA static/early biding, dynamic/late biding)

메소드에 대한 호출을 메소드 바디와 연결하는 것을 바인딩이라고 하는데 자바에서는 크게 2종류가 있다.

- 정적바인딩(static binding, early binding)
- 동적바인딩(dynamic binding, late binding)

1. 정적 바인딩(static/early biding)

- Object의 타입이 컴파일러에 의해 컴파일타임에 결정되는 것을 말하며 private, final, static 메소드의 경우 모두 정적 바인딩 이다.

class Dog {
private void jitda(){
System.out.println("멍멍~~");
}
public static void main(String[] args) {
Dog d = new Dog();
d.jitda();
}
}

[결과]
멍멍~~


2. 동적 바인딩(dynamic/late binding)

Object의 타입이 런타임중에 결정된다.
아래 예제에서 컴파일러는 Dog의 인스턴스가 Pudle의 인스턴스도 되기에 타입을 알수없으며 단지 컴파일 타입오류 체크를 
위해 Dog을 Base Type으로 사용하여 컴파일을 진행한다. 컴파일시점에는 호출된 메소드만 기술하고 넘어가게 되고 실행중에 
메모리힙에 생성된 Pudle의 jitda() 메소드가 호출되는 것이다.

package onj;

class Dog {
void jitda(){
System.out.println("멍멍~~");
}
}

class Pudle extends Dog {
void jitda(){
System.out.println("푸들~~");
}
}

public class DogTest {
public static void main(String[] args) {
Dog d = new Pudle();
d.jitda();
}
}


[결과]
푸들~~
평일주간[100%환급과정]
(8/04)C#4.0,WinForm,ADO.NET
(8/04)자바기초JDBC,Servlet/JSP까지
(8/04)Spring,MyBatis,Hibernate실무과정
(8/11)PL/SQL,ORACLE HINT,TUNING
(8/11)SQL기초에서 Schema Object까지
(8/11)안드로이드개발자과정
(8/11)채용예정교육
평일야간[개인80%환급]
(8/04)웹퍼블리싱 마스터
(8/05)JSP,jQUERY,Spring,MyBatis
(8/06)Spring3.X, MyBatis, Hibernate
(8/08)C#,Network,ADO.NET,ASP.NET
(8/11)SQL기초에서실무까지
(8/11)안드로이드개발자과정
(8/28)자바JSP,jQuery,Spring,MyBatis
주말주간[개인80%환급]
(8/02)Spring3.X, MyBatis, Hibernate
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)SQL기초에서실무까지
(8/09)안드로이드개발자과정
(8/09)자바JSP,Ajax,jQuery,Spring,MyBatis
(8/23)JAVA,Network&WEB&Framework
주말야간[개인80%환급](18:30~22:20)
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지

댓글 없음:

댓글 쓰기