04_类与对象_课程动手动脑问题以及课后实验性问题及解答集锦
生活随笔
收集整理的這篇文章主要介紹了
04_类与对象_课程动手动脑问题以及课后实验性问题及解答集锦
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Answer:
?
動手動腦:
1——以下代碼為何無法通過編譯?哪兒出錯了?
??
Answer:
因為類Foo的構造函數是有一個參數的,所以我們在new一個Foo類的對象時必須賦予一個符合條件的實參。
?
?
?
?2——
請運行TestStaticInitializeBlock.java示例,觀察輸出結果,總結出“靜態初始化塊的執行順序”。
?TestStaticInitializeBlock.java:
class Root {static{System.out.println("Root的靜態初始化塊");}{System.out.println("Root的普通初始化塊");}public Root(){System.out.println("Root的無參數的構造器");} } class Mid extends Root {static{System.out.println("Mid的靜態初始化塊");}{System.out.println("Mid的普通初始化塊");}public Mid(){System.out.println("Mid的無參數的構造器");}public Mid(String msg){//通過this調用同一類中重載的構造器this();System.out.println("Mid的帶參數構造器,其參數值:" + msg);} } class Leaf extends Mid {static{System.out.println("Leaf的靜態初始化塊");}{System.out.println("Leaf的普通初始化塊");} public Leaf(){//通過super調用父類中有一個字符串參數的構造器super("Java初始化順序演示");System.out.println("執行Leaf的構造器");}}public class TestStaticInitializeBlock {public static void main(String[] args) {new Leaf();} }? 輸出結果:
?
?總結靜態初始化塊的執行順序:
1.靜態初始化塊只執行一次。
2.創建子類型的對象時,也會導致父類型的靜態初始化塊的執行。
2.并且從父類到子類依次執行完靜態初始化塊。然后從父類到子類依次執行完普通初始化塊。最后再從父類到子類依次執行構造函數。(執行順序:靜態初始化塊——>普通初始化塊——>構造函數)
?
?
?
?
?
要求發表的:
1——自行總結java字段初始化的規律:
? ? ? Answer:
所有類的變量都默認初始化為null,比如String a; Integer b;數字類的原始數據類型默認初始化為0,比如int a; short b; char c;
boolean默認初始化為false.
針對java中的構造函數的初始化: 對象創建的時候先賦初始化值然后在調用構造函數初始化。
?
?
類字段的初始化順序——
1.執行類成員定義時指定的默認值或類的初始化塊,到底執行哪一個要看哪一個“排在前面”。
2.執行類的構造函數:
類的初始化塊不接收任何的參數,而且只要一創建類的對象,它們就會被執行。因此,適合于封裝那些“對象創建時必須執行的代碼”。
?
轉載于:https://www.cnblogs.com/6354-aa/p/5995228.html
總結
以上是生活随笔為你收集整理的04_类与对象_课程动手动脑问题以及课后实验性问题及解答集锦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Onvif协议及协议测试工具使用详解
- 下一篇: 软件测试之 app性能测试的指标