java 멀티태스킹 구조기의 호출 순서 연구
부류의 구조기는 항상 부류의 구조 과정에서 호출되고 계승에 따라 점차적으로 위로 연결되어 모든 부류의 구조기가 호출될 수 있도록 한다.이렇게 하는 것은 의미가 있다. 왜냐하면 구조기는 특수한 임무를 가지고 있기 때문이다. 대상이 정확한 구조인지 아닌지를 검사하는 것이다.하위 클래스는 자신의 구성원만 접근할 수 있고, 부모 클래스의 구성원은 접근할 수 없습니다. (부모 클래스는 보통private 형식입니다.)부류의 구조기만 적당한 지식과 권한을 가지고 자신의 원소를 초기화할 수 있다.따라서 모든 구조기를 호출해야 한다. 그렇지 않으면 완전한 대상을 정확하게 구성할 수 없다.이것이 바로 컴파일러가 모든 하위 클래스 부분에 구조기를 호출해야 하는 이유이다.하위 클래스의 구조기 주체에서 특정한 부모 클래스를 호출하는 것을 명확하게 지정하지 않으면 기본 구조기를 묵묵히 호출합니다.기본 구조기가 존재하지 않으면 컴파일러가 오류를 보고합니다.
조합, 계승, 다태가 구축 순서에서의 작용을 보여주는 예를 살펴보자.
//: polymorphism/Sandwich.java
// Order of constructor calls.
package polymorphism;
import static net.mindview.util.Print.*;
class Meal {
Meal() { print("Meal()"); }
}
class Bread {
Bread() { print("Bread()"); }
}
class Cheese {
Cheese() { print("Cheese()"); }
}
class Lettuce {
Lettuce() { print("Lettuce()"); }
}
class Lunch extends Meal {
Lunch() { print("Lunch()"); }
}
class PortableLunch extends Lunch {
PortableLunch() { print("PortableLunch()");}
}
public class Sandwich extends PortableLunch {
private Bread b = new Bread();
private Cheese c = new Cheese();
private Lettuce l = new Lettuce();
public Sandwich() { print("Sandwich()"); }
public static void main(String[] args) {
new Sandwich();
}
} /* Output:
Meal()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettuce()
Sandwich()
*///:~
예를 들어 다른 클래스로 복잡한 클래스를 만들었고, 클래스마다 자신의 구조기를 설명했다.그중에서 가장 중요한 유형은 Sandwich인데 3층 계승과 세 개의 구성원 대상을 반영한다.main () 에서Sandwich 대상을 만들면 출력 결과를 볼 수 있습니다.
다중 구조기의 호출 순서는 다음과 같다.
4
4
4
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.