java 멀티태스킹 구조기의 호출 순서 연구

1802 단어

부류의 구조기는 항상 부류의 구조 과정에서 호출되고 계승에 따라 점차적으로 위로 연결되어 모든 부류의 구조기가 호출될 수 있도록 한다.이렇게 하는 것은 의미가 있다. 왜냐하면 구조기는 특수한 임무를 가지고 있기 때문이다. 대상이 정확한 구조인지 아닌지를 검사하는 것이다.하위 클래스는 자신의 구성원만 접근할 수 있고, 부모 클래스의 구성원은 접근할 수 없습니다. (부모 클래스는 보통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
  • 서브클래스 구조기의 주체를 호출한다
  • 좋은 웹페이지 즐겨찾기