1. 程式人生 > >子類,父類靜態程式碼塊,構造程式碼塊,以及建構函式執行順序

子類,父類靜態程式碼塊,構造程式碼塊,以及建構函式執行順序

父類:

package com.Test;

public class StaticExtends {
//靜態程式碼塊
    static{
        System.out.println("父類靜態程式碼塊");    
    }
    //構造程式碼塊
    {
        System.out.println("父類構造程式碼塊");
    }
    //建構函式
    public StaticExtends(){
        System.out.println("父類建構函式");
    }

}

子類:

package com.Test;

public class SonExtends  extends StaticExtends{
    //靜態程式碼塊
    static{
        System.out.println("子類靜態程式碼塊");
    }
    //構造程式碼塊
    {
        System.out.println("子類構造程式碼塊");
    }
    //建構函式
    public SonExtends(){
        System.out.println("子類建構函式");
    }
    public static void main(String[] args) {
        //當子類的main方式什麼也不寫時將列印

     //父類靜態程式碼塊
    //子類靜態程式碼塊
        //SonExtends son=new SonExtends();

//當子類new出物件後,    

//        父類靜態程式碼塊
//        子類靜態程式碼塊
//        父類構造程式碼塊
//        父類建構函式
//        子類構造程式碼塊
//        子類建構函式  

    }
    
    
}

因為被static修飾後,即是屬於類的,物件建立與否將不妨礙其執行,而構造程式碼塊與建構函式都是依賴於物件的,

執行順序:父類靜態程式碼塊,子類靜態程式碼塊,父類構造程式碼塊,父類建構函式,,子類構造程式碼塊,子類建構函式

相關推薦

靜態程式碼構造程式碼以及建構函式執行順序

父類: package com.Test; public class StaticExtends { //靜態程式碼塊     static{         System.out.println("父類靜態程式碼塊");         }     //構造程式碼塊   

【Java基礎】的例項化、static、建構函式執行順序

重溫java基礎,以免自己以後犯原則性錯誤,這是最基本,最基礎的東西。 直接上程式碼: A.java public class A { int a1 = 8; int a2 = getA2(); { int a3 = 9; System.out.pr

Java靜態程式碼程式碼建構函式執行順序

根據以下程式進行分析 定義一個父類 package sas.LearnJava; public class ExcuteOrderTest { { System.out.println("我是在父類開始的普通程式碼塊!"); } public ExcuteOrder

靜態、例項建構函式執行順序

靜態塊、例項塊、建構函式的執行順序:     1.先執行靜態方法塊    2.再執行例項方法塊    3. 再執行建構函式塊 同一個類下不管new多少次,該類下的靜態塊只執行一次(但是一次可以執行多個) 不管是new幾個類

派生建構函式執行順序及虛基的概念

派生類建構函式執行順序如下:     所有基類的建構函式,多個基類建構函式的執行順序取決於定義派生類時所指定的順序,與派生類建構函式中所定義的成員初始化列表的引數順序無關; 建構函式的顯示初值初始化,與初始化列表順序無關,而與類中成員定義順序有關。 如: clas

java中靜態代碼構造代碼構造方法、main函數的執行順序

style 狀態 構造代碼塊 方法 構造函數 java 順序 png 執行順序 靜態代碼塊:在類被加載的時候就運行了,且只運行一次。static{} 構造代碼塊:在創建對象時被調用,每次創建對象都會調用一次。比靜態代碼塊少了static。{} 構造方法:用於創建對象時定義

關於中new物件與建構函式執行順序的問題

     如下有3個類,其中COM是表示元件類別。Root類包含一個COM物件引用,Root中派生出Stem類(即Stem類繼承Root類)。每個類都有一個無引數的建構函式,列印當前的類名。其中Root類中擁有一個靜態程式碼塊。 package com.practise;

Java靜態程式碼、非靜態程式碼建構函式執行順序一覽表

子類Child繼承父類Parent Child child=new Child(); 執行順序如下: ①父類靜態程式碼塊>>②子類靜態程式碼塊>>③父類非靜態程式碼塊>>④父類建構函式>>⑤子類非靜態程式碼塊>>⑥子類

,靜態程式碼,程式碼呼叫順序

<![endif]--> class String ; private age { out "people static block" } System. .println( ); People() { System. .println( );

例項化時的成員變數建構函式程式碼執行順序

package test; public class SuperC { static int i=10; SuperC(){ print(); } void print(){ System.out.println(i); } }package test; public class

靜態語句靜態語句構造方法在執行順序

package test; public class Main { public static void main(String args[]) { new subclass();

Java靜態程式碼構造程式碼構造方法的執行順序

        在學習Java基礎期間,子父類的靜態程式碼塊、構造程式碼塊、構造方法的執行順序容易混淆,現在通過一段程式來說明它們的執行順序。 一、先看一個簡單的靜態測試程式: class Fa

java基礎 靜態 static 問在多態中靜態方法覆蓋靜態方法時引用調用的是哪個方法?

xtend java pos main 靜態方法 show extends ava pri 多態 package com.swift.jiekou; public class Jicheng_Tuotai_jingtai_diaoyong { publ

引用靜態欄位不會導致初始化

先看程式碼 // 父類 public class SuperClass { static { System.out.println("SuperClass Init!"); } public static int valu

靜態成員變數建構函式執行順序

Java程式在初始化工作可以在許多不同的程式碼塊中來完成(例如靜態程式碼塊、建構函式等), 它們的執行順序如下: 父類靜態代變數、 父類靜態程式碼塊、 子類靜態變數、 子類靜態程式碼塊、 父類非靜態變數(父類例項成員變數)、 父類建構函式、 子類非靜態變數(子類例項成員變數

靜態構造程式碼構造程式碼建構函式

如果類還沒有被載入:1、先執行父類的靜態程式碼塊和靜態變數初始化,並且靜態程式碼塊和靜態變數的執行順序只跟程式碼中出現的順序有關。2、執行子類的靜態程式碼塊和靜態變數初始化。3、執行父類的例項變數初始化4、執行父類的建構函式5、執行子類的例項變數初始化6、執行子類的建構函式

java this 調再調用已覆蓋的方法及屬性(又一次理解)

views args pop word per ews nds 如果 ext 之前一直以為 this關鍵字 是指調用者對象,但是這次才真正理解,this代表當前對象,但是指向調用者對象,其實就是多態的用法,如下所示:B 繼承了 A,在B 中調用A類的方法,在A 中用this

與派生指針指向對象

namespace 簡單工廠模式 為什麽 對象創建 簡單工廠 pos 釋放 自己的 分享 先看一段代碼: 1 #include<iostream> 2 3 using namespace std; 4 5 class Base{ 6 publi

的調用主要是參數和方法調用

繼承 bsp pri load china 類的方法 調用父類 class sub #子類調用父類的方法 class Vehichle: Country=‘china‘ #名字=‘ales‘不好這樣 def __init__(self,name,s

繼承中的構造

gen 向上轉型 類構造 復制 使用 article col 成員 ring 子類繼承父類,子類構造器會默認調用super()(無論構造器中是否寫有super()),用於初始化父類成員.同時當父類中存在有參構造器時,必須提供無參構造器,子類構造器中並不會自動繼承有參構造器,