유일한 차이점은 작업 순서입니다. 선언에서 초기화되는 필드는 클래스 생성자가 호출되기 전에 평가됩니다. 이 방법으로 서브 클래스에서 초기화되는 필드는 슈퍼 생성자가 완료된 후 서브 클래스의 생성자가 호출되기 전에 평가됩니다.
public class Tester {
Tester (String msg) {
System.out.println(this + ":" + msg);
}
}
내가 수퍼 클래스가 :
public class Test {
protected Tester t1 = new Tester("super init block");
Test (String constructorMsg) {
new Tester(constructorMsg);
}
}
을 내가 서브 클래스가 있습니다
Public class TestSub extends Test {
private Tester t2 = new Tester("sub init block");
TestSub(String constructorMsg) {
super(constructorMsg);
new TTester("sub constructor");
}
}
을 내가 테스트 클래스가
:
는 다음과 같은 예를 생각해
내 01 있음 2,방법, 나는 TestSub
의 인스턴스를 생성 :
[email protected]:super init block
[email protected]:super constructor
[email protected]:sub init block
[email protected]:sub constructor
출처
2009-07-25 17:17:04
akf
존 소총의 편집은 또한 인스턴스의 초기화와 같은 바이트 코드를받을 수 있나요 다시 –
공격 다음과 같이
결과는? 대답은 '예'라고 생각합니다. –
@ mmyers : 네, 정확히 똑같습니다. –