国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java 無參、有參構造方法;靜態、非靜態代碼塊執行順序

2019-11-14 09:54:20
字體:
來源:轉載
供稿:網友

1. 基本概念

1.1.靜態代碼塊

靜態代碼塊

static { }

非靜態代碼塊

{ }

靜態代碼塊和非靜態代碼塊的異同點如下:

相同點:都是JVM加載類時且在構造函數執行之前執行,在類中都可以定義多個,一般在代碼塊中對一些static變量進行賦值。 不同點:靜態代碼塊在非靜態代碼塊之前執行(靜態代碼塊 > 非靜態代碼塊)。靜態代碼塊只在第一次new時執行一次,之后不再執行。而非靜態代碼塊每new一次就執行一次。

創建Son類,寫入 靜態代碼塊和非靜態代碼塊

public class Son extends Parent{ static { System.out.測試Test類

public class Test { public static void main(String[] args) { Son son = new Son(); System.out.println("*****"); Son sons = new Son(); System.out.println("*****"); }}

結果 這里寫圖片描述

1.2.構造函數

子類繼承父類的時候會自動繼承父類的默認構造函數(也就是繼承那個無參數的構造函數)。而如果類里面已經有一個帶有參數的構造函數了,如果沒有寫那個默認的不帶參數的構造函數的話,繼承的時候子類就會報錯,因為系統不知道要不繼承哪個構造函數,必須明確的使用super()關鍵字來描述。所以我們一般為了避免這種錯誤的發生,在有帶有多個構造函數的類里面都會寫一個不帶參數的構造函數。

注:如果類無子類,則無需寫無參的構造函數

1.3.實例

父類

public class Parent { public Parent(){ System.out.println("父類的無參"); } public Parent(String a){ System.out.println("父類的有參"); } static { System.out.println("父類的靜態代碼塊"); } { System.out.println("父類的非靜態代碼塊"); }}

子類

public Son(){ System.out.println("子類的無參"); } public Son(String A){ System.out.println("子類的有參"); } static { System.out.println("子類的靜態代碼塊"); } { System.out.println("子類的非靜態代碼塊"); }

測試類

public class Test { public static void main(String[] args) { Son son = new Son(); System.out.println("*****"); Son sons = new Son("yy"); System.out.println("*****"); }}

結果 這里寫圖片描述


說明: 靜態代碼塊是在類加載時自動執行的,非靜態代碼塊在創建對象自動執行的代碼,不創建對象不執行該類的非靜態代碼塊。 順序: 靜態代碼塊 –>非靜態代碼塊 –>類構造函數。

執行順序: 父類的靜態代碼塊–>子類的靜態代碼塊 –>父類的非靜態代碼塊 –>父類的無參–>子類的非靜態代碼塊–>子類的無參


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泊头市| 太原市| 成都市| 夏河县| 淅川县| 柘城县| 浦东新区| 钦州市| 收藏| 洮南市| 江津市| 青冈县| 大安市| 五峰| 荔浦县| 鱼台县| 四平市| 民丰县| 阳江市| 景东| 石阡县| 望江县| 松潘县| 孝义市| 长泰县| 韩城市| 南和县| 博爱县| 蓬安县| 宾阳县| 芦溪县| 通化市| 鄯善县| 阿荣旗| 马龙县| 邓州市| 常宁市| 准格尔旗| 利川市| 水富县| 琼海市|