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

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

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

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

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("*****"); }}

結果 這里寫圖片描述


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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 城口县| 朔州市| 阿克陶县| 延长县| 溧阳市| 界首市| 绥芬河市| 涞源县| 延吉市| 三河市| 平湖市| 信丰县| 余干县| 株洲市| 永年县| 偃师市| 商丘市| 溧水县| 同德县| 防城港市| 隆尧县| 封丘县| 固镇县| 八宿县| 东安县| 家居| 沛县| 石嘴山市| 廊坊市| 富民县| 阿克苏市| 五大连池市| 富平县| 改则县| 涪陵区| 博野县| 棋牌| 洛阳市| 永仁县| 镇远县| 乐亭县|