자바 클래스 초기 화 실행 프로 세 스 분석
package com.test.ClassLaoderTest;
public class test1 {
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
public static void main(String[] args) {
}
}
직접 실행:main 방법 에서 어떠한 호출 도 하지 않 은 상태 에서 정적 코드 블록 과 정적 변 수 를 자동 으로 호출 합 니 다.
(2)정적 변수 와 정적 방법 을 호출 합 니 다.
테스트 코드:
package com.test.ClassLaoderTest;
public class test1 {
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
public static void main(String[] args) {
System.out.println(test1.s_variable);
test1.test1();
}
}
실행:결론:정적 방법/정적 변 수 를 호출 할 때 정적 코드 블록 에 만 있 고 나머지 코드 블록/구조 방법 은 불 러 오지 않 습 니 다.
(3)생 성 대상:
package com.test.ClassLaoderTest;
public class test1 {
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
public static void main(String[] args) {
test1 t1 = new test1();
}
}
실행 결과:출력 내용:
정적 변수
정적 코드 블록 초기 화 실행
공개 변수
개인 변수
코드 블록 초기 화 실행 됨
저 는 구조 법 입 니 다.
결론:대상/실례 화 를 만 들 때 호출 순서:정적 코드 블록->코드 초기 화->구조 방법,마지막 으로 실행 하 는 것 이 구조 방법 입 니 다.
(4)계승 관계 가 있 는 클래스 초기 화 실행 절차:
환경:
부모 클래스:
package com.test.ClassLaoderTest;
public class father {
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public father(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
}
test1.java:아버지 아버지:
package com.test.ClassLaoderTest;
public class test1 extends father{
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
public static void main(String[] args) {
}
}
main 방법 은 아무런 조작 도 하지 않 고 실행:extends 가 계승 되면 부모 클래스 정적 코드 블록 을 우선 호출 합 니 다.
(5)계승 관계 에서 의 정적 호출 방법:
하위 클래스 를 수정 하면 됩 니 다:
package com.test.ClassLaoderTest;
public class test1 extends father{
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
public static void main(String[] args) {
test1.test1();
father.test1();
}
}
실행:결과:
부모 클래스 정적 변수
부모 클래스 정적 코드 블록 초기 화 실행
하위 클래스 정적 변수
하위 클래스 정적 코드 블록 초기 화 실행
이것 은 하위 정적 방법 이다.
이것 은 부류 의 정적 방법 이다
main 방법 중 정적 방법 을 우선 호출 하 는 사람 은 누 구 를 우선 불 러 옵 니까?
(6)상속 관계 에 있 는 창설 대상:
코드:
package com.test.ClassLaoderTest;
public class test1 extends father{
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
public static void main(String[] args) {
test1 t1 =new test1();
}
}
실행:결과:
부모 클래스 정적 변수
부모 클래스 정적 코드 블록 초기 화 실행
하위 클래스 정적 변수
하위 클래스 정적 코드 블록 초기 화 실행
부모 클래스 공개 변수
부모 클래스 개인 변수
부모 클래스 초기 화 코드 블록 이 실행 되 었 습 니 다.
나 는 부류 구조 방법 이다.
하위 클래스 공개 변수
하위 클래스 개인 변수
하위 클래스 초기 화 코드 블록 이 실행 되 었 습 니 다.
저 는 하위 구조 방법 입 니 다.
결론:결 과 를 통 해 알 수 있 듯 이 하위 클래스 든 부모 클래스 의 정적 코드 블록 이 든 정적 코드 블록 은 어디 에 있 든 아빠 등급 이 고 가장 먼저 불 러 옵 니 다.test 1 대상 을 만 들 때 부모 코드 블록 을 우선 불 러 옵 니 다.그러면 그의 초기 화 실행 절 차 는 다음 과 같다.부모 클래스 정적 코드 블록>하위 클래스 정적 코드 블록>부모 클래스 초기 화 코드 블록>부모 클래스 구조 방법>하위 코드 블록>하위 클래스 구조 방법
(7)상속 관계 에 있 는 부모 클래스 생 성 대상:
package com.test.ClassLaoderTest;
public class test1 extends father{
public static String s_variable = " ";
public String init_variable = " ";
private String p_variable = " ";
//
static {
System.out.println(s_variable);
System.out.println(" ");
}
//
{
System.out.println(init_variable);
System.out.println(p_variable);
System.out.println(" ");
}
//
public test1(){
System.out.println(" ");
}
//
public static void test1(){
System.out.println(" ");
}
public static void main(String[] args) {
father father = new father();
}
}
실행:결과:
부모 클래스 정적 변수
부모 클래스 정적 코드 블록 초기 화 실행
하위 클래스 정적 변수
하위 클래스 정적 코드 블록 초기 화 실행
부모 클래스 공개 변수
부모 클래스 개인 변수
부모 클래스 초기 화 코드 블록 이 실행 되 었 습 니 다.
나 는 부류 구조 방법 이다.
결론:우선 실행 되 는 것 은 두 가지 정적 코드 블록 이 고 그 다음 에 부모 유형의 코드 블록 과 구조 방법 입 니 다.서브 클래스 의 코드 블록 과 구조 방법 이 실행 되 지 않 은 것 은 인 스 턴 스 화 서브 클래스 가 없 기 때문에 그 가 없 을 것 입 니 다.그러면 대상 을 만 들 때 만 코드 블록 과 구조 방법 을 호출 할 수 있 습 니 다.
자바 류 초기 화 실행 절차 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 류 초기 화 실행 절차 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 에서 클래스 의 실례 화 방법자바 에서 클래스 의 실례 화 방법 은 네 가지 경로 가 있다. 1) new 연산 자 사용 2) Class 대상 을 호출 하 는 new Instance () 방법 3) 클론 () 방법 을 호출 하여 기 존 인 스 턴...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.