생성자에서 오버라이드된 메소드를 호출
아래의 클래스가 있다고 했을 때
class 하위클래스 {
int i=0;
하위클래스() {
i = 10;
}
void display() {
System.out.println(“i = “ + i);
}
}
class 슈퍼클래스 {
슈퍼클래스() {
display();
}
void display() {
System.out.println(“여긴 상위 클래스…”);
}
}
하위클래스의 인스턴스를 new 하는 시점에 어떤 결과가 나오는 지를 추측해 보면…
위 클래스에서 상위클래스에서 display()란 메소드를 호출하는데 이 메소드는 하위 클래스에서 재정의(override)한 메소드 인 것을 확인 할 수 있는데 자바에서는 오버라이드된 하위클래스의 display() 메소드가 실행됩니다.
new 하위클래스()를 실행하게 되면 하위클래스의 생성자를 실행하기 전에 상위클래스의 생성자가 실행되므로 결과적으로 하위쿨래스의 display() 함수가 실행되어 “i = 0”으로 나타날 겁니다.
참고로 C++이라면 이 같은 경우 비록 Override 된다고 하더라도 슈퍼클래스의 display()가 호출됩니다.
[예제]
package onj;
/**
*
* @author OnJ OracleJava Communuty
* 아래 예제에서 i ?
*/
class SuperClass {
SuperClass() {
display();
}
void display() {
System.out.println("SuperClass...");
}
}
class SubClass extends SuperClass {
int i = 0;
SubClass() {
i = 10;
}
void display() {
System.out.println("i = " + i);
}
}
public class OnjConstructorTest {
public static void main(String[] args) {
SubClass s = new SubClass();
}
}
[결과]
i = 0
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/14)[기업100%환급]안드로이드개발자과정
(7/14)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/21)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
평일야간(19:00~21:50) 개강
(7/09)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/10)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/11)웹퍼블리싱 마스터
(7/15)SQL기초에서실무까지
(7/15)안드로이드개발자과정
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/16)Spring3.X, MyBatis, Hibernate실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(7/05)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
주말저녁(18:30~22:20) 개강
(7/19)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/14)[기업100%환급]안드로이드개발자과정
(7/14)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/21)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
평일야간(19:00~21:50) 개강
(7/09)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/10)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/11)웹퍼블리싱 마스터
(7/15)SQL기초에서실무까지
(7/15)안드로이드개발자과정
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/16)Spring3.X, MyBatis, Hibernate실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(7/05)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
주말저녁(18:30~22:20) 개강
(7/19)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
댓글 없음:
댓글 쓰기