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

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

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

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

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

結果 這里寫圖片描述


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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博客| 房山区| 闸北区| 颍上县| 余姚市| 白城市| 阳泉市| 吉隆县| 平阴县| 廊坊市| 彭水| 南充市| 庐江县| 开封县| 朔州市| 东明县| 和田县| 封丘县| 报价| 遂昌县| 湖州市| 屏东市| 土默特右旗| 松江区| 寻甸| 博罗县| 京山县| 杨浦区| 邻水| 行唐县| 平安县| 定结县| 仁怀市| 南陵县| 巫山县| 阿图什市| 鄂伦春自治旗| 无棣县| 无极县| 合江县| 五河县|