Java의 인스턴스 변수 초기화와 생성자 실행 비교
Java 객체 초기화에 대한 일반적인 오해 중 하나는 필드와 생성자가 실행되는 순서입니다. . 예를 들어 이 개념을 명확하게 설명하겠습니다.
주어진 코드 조각에서:
class X { Y b = new Y(); X() { System.out.print("X"); } } class Y { Y() { System.out.print("Y"); } } public class Z extends X { Y y = new Y(); Z() { System.out.print("Z"); } public static void main(String[] args) { new Z(); } }
필드가 생성자보다 먼저 초기화된다는 가정과 달리 이 프로그램의 출력은 "YZX"입니다. 그 이유를 이해하려면 Java 초기화 프로세스를 자세히 살펴봐야 합니다.
초기화 순서:
Java는 특정 순서로 클래스를 초기화합니다.
위의 예에서 이벤트 순서는 다음과 같습니다.
따라서 올바른 순서는 실행은 "YZX"입니다. 이는 객체 생성 시 예기치 않은 동작을 방지하기 위해 Java 초기화 순서를 이해하는 것이 중요하다는 점을 강조합니다.
위 내용은 Java에서 인스턴스 변수 초기화 및 생성자 실행의 올바른 실행 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!