머리말
정적 코드는 정적이 아닌 코드보다 우선합니다. 정적으로 수정 된 멤버는 모든 클래스 멤버이며 JVM이 클래스를로드함에 따라 실행되기 때문입니다. 정적으로 수정되지 않은 멤버를 인스턴스 멤버라고도합니다. 힙 메모리에로드되기 전에 물체를 만들어야합니다. 따라서 정적이 아닌 경우 정적이 선호됩니다.
생성자 (구조 방법)를 실행할 때 메소드 본문을 실행하기 전에 세 가지 암시 적 단계가 있습니다.
1. 슈퍼 성명서에는 다음과 같은 세 가지 상황이있을 수 있습니다.
1) 생성자의 첫 번째 줄은이 진술이며, 암시 적 세 단계는 실행되지 않습니다.
2) 생성자 본체의 첫 번째 줄은 슈퍼 문이며 해당 부모 클래스의 생성자가 호출됩니다.
3) 생성자 본문의 첫 번째 줄은이 진술이나 슈퍼 진술이 아니며, Super ()는 암시 적으로, 즉 상위 클래스의 기본 생성자라고 불리며, 부모 클래스는 일반적으로 기본 생성자를 제공해야합니다.
2. 비 정적 변수 초기화;
3. 코드 블록을 구성하십시오.
이를 통해 건설 코드 블록이 시공 방법의 메소드 본문보다 우선하지만이 키워드와 슈퍼 키워드는 동시에 나타날 수 없으며 코드의 첫 번째 줄에만있을 수 있습니다. 이 키워드가 나타나면 암시 적 세 단계가 실행되지 않습니다.
먼저 다음 클래스를보고 출력을 판단하십시오.
공개 클래스 A {static {System.out.print (1); } public a () {System.out.print (2); }} public class b는 {static {system.out.print ( "a")를 확장합니다. } public b () {System.out.print ( "b"); }} public class c {public static void main (String [] args) {a a = new b (); a = 새로운 b (); }} 부모 수업 및 아동 수업 실행 순서
정적 변수의 실행 특성
메소드 재정의 메모
1. 부모와 자식 클래스에 정적 코드 블록과 생성자가있는 경우 실행 순서는 다음과 같습니다.
부모 클래스 정적 코드 블록> 서브 클래스 정적 코드 블록
부모 클래스 생성자> 서브 클래스 생성자 (먼저 아버지가 있고 아이가 있습니다)
다단계 상속 관계 인 경우, 최고 수준의 부모 클래스가 먼저 실행 된 다음 차례로 감소합니다.
요약 : 정적 실행이 선호되며, 부모 클래스 실행이 선호됩니다.
참고 : 정적 코드 블록은 JVM이 클래스를로드하고 정적 코드 블록이 한 번만 실행될 때 실행됩니다.
2. 클래스에서 메소드를 호출 할 때 메소드 본문을 실행하기 전에 클래스의 멤버 변수를 먼저 할당해야합니다. 코드에 특정 값이 할당되지 않으면 기본값도 있습니다. 멤버 변수의 할당 순서는 전후에 순서대로 수행됩니다.
직접 할당과 생성자 할당이 모두 있으면 순서대로 실행하십시오.
3. 오버라이드 (오버라이드) 오버로드 (오버로드)
오버로드는 메소드 이름이고 리턴 유형은 동일합니다. 유일한 차이점은 메소드 매개 변수가 다르다는 것입니다 (매개 변수 유형 또는 매개 변수 유형이 다릅니다).
고쳐 쓰기:
다형성 :
부모 클래스의 참조는 서브 클래스의 객체를 가리 킵니다. 호출시 실행 된 방법은 서브 클래스의 방법입니다. 부모 클래스의 방법은 실행되지 않습니다.
소위 다형성은 부모 클래스 또는 인터페이스 유형의 참조가 인터페이스를 구현하는 클래스의 서브 클래스 또는 인스턴스 (개체)를 가리킬 수 있음을 의미합니다.
위의 지시 사항을 읽은 후 위의 프로그램의 출력 결과도 알아야합니다.
출력 결과는 다음과 같습니다. 1A2B2B
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.