[자바교육강좌,자바객체]자바 객체 생성과정(Java Object New)
New 수식에 의해 객체의 메모리가 할당 되고 객체내의 모든 인스턴스 변수는 default 초기치(0, ‘\u0000’,false,
null)로 초기화 된다
생성자가 호출되어 다음 순서대로 실행된다.
- 생성자 몸체의 처음 문장이 this(…)일 경우엔 해당 생성자를 호출하고 아닐 경우 상위 클래스의 생성자를 호출 후 인스턴스 변수의 초기화 수식(변수명 = 수식;)과 초기화 블록이 실행된다.
- 생성자의 나머지 몸체가 실행된다.
[예제]
아래 예제에서 new Circle2() 이후 실행 순서를 잘 알아두자.
package onj;
class Circle
{
private double radius;
//Circle의 생성자
public Circle(double radius) {
this.radius = radius;
System.out.println("Circle(double radius): radius = " + this.radius);
}
}
{
private double radius;
//Circle의 생성자
public Circle(double radius) {
this.radius = radius;
System.out.println("Circle(double radius): radius = " + this.radius);
}
}
class Circle2
{
//아래 초기화 수식은 인스턴스 초기화 블록보다 먼저 실행
private Circle inner = new Circle(10); // 초기화 수식 (1)
private Circle outer;
{
//아래 초기화 수식은 인스턴스 초기화 블록보다 먼저 실행
private Circle inner = new Circle(10); // 초기화 수식 (1)
private Circle outer;
//인스턴스 초기화 블록
{
outer = new Circle(20); // 초기화 블록(2)
}
{
outer = new Circle(20); // 초기화 블록(2)
}
public Circle2() { // 생성자(3)
System.out.println( "Circle2() 생성자" );
}
System.out.println( "Circle2() 생성자" );
}
public static void main(String args[]) {
new Circle2();
}
}
new Circle2();
}
}
[결과]
Circle(double radius): radius = 10.0
Circle(double radius): radius = 20.0
Circle2() 생성자
Circle(double radius): radius = 20.0
Circle2() 생성자
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
댓글 없음:
댓글 쓰기