java面向物件的四大特性-多型,繼承,抽象,封裝
對於面向物件的程式設計語言來說,類毫無疑問是其最重要的基礎。抽象、封裝、繼承、多型這四大特性都離不開類,只有存在類,才能體現面向物件程式設計的特點,今天我們就來了解一些類與繼承的相關知識。首先,我們講述一下與類的初始化相關的東西,然後再從幾個方面闡述繼承這一大特性。以下是本文的目錄大綱:
一.你瞭解類嗎?
二.你瞭解繼承嗎?
三.常見的面試筆試題
若有不正之處,請多多諒解並歡迎批評指正。
請尊重作者勞動成果,轉載請標明原文連結:
一.你瞭解類嗎?
在Java中,類檔案是以.java為字尾的程式碼檔案,在每個類檔案中最多隻允許出現一個public類,當有public類的時候,類檔案的名稱必須和public類的名稱相同,若不存在public,則類檔案的名稱可以為任意的名稱(當然以數字開頭的名稱是不允許的)。
在類內部,對於成員變數,如果在定義的時候沒有進行顯示的賦值初始化,則Java會保證類的每個成員變數都得到恰當的初始化:
1)對於 char、short、byte、int、long、float、double等基本資料型別的變數來說會預設初始化為0(boolean變數預設會被初始化為false);
2)對於引用型別的變數,會預設初始化為null。
如果沒有顯示地定義構造器,則編譯器會自動建立一個無參構造器,但是要記住一點,如果顯示地定義了構造器,編譯器就不會自動新增構造器。注意,所有的構造器預設為static的。
下面我們著重講解一下 初始化 順序:
當程式執行時,需要生成某個類的物件,Java執行引擎會先檢查是否載入了這個類,如果沒有載入,則先執行類的載入再生成物件,如果已經載入,則直接生成物件。
在類的載入過程中,類的static成員變數會被初始化,另外,如果類中有static語句塊,則會執行static語句塊。static成員變數和static語句塊的執行順序同程式碼中的順序一致。記住,在Java中,類是按需載入,只有當需要用到這個類的時候,才會載入這個類,並且只會載入一次。看下面這個例子就明白了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Test
{
public static void main(String[]
args) throws ClassNotFoundException
{
Bread
bread1 = new Bread();
Bread
bread2 = new Bread();
}
}
class Bread
{
static {
System.out.println( "Bread
is loaded" );
}
public Bread()
{
System.out.println( "bread" );
}
}
|
執行這段程式碼就會發現"Bread is loaded"只會被列印一次。
在生成物件的過程中,會先初始化物件的成員變數,然後再執行構造器。也就是說類中的變數會在任何方法(包括構造器)呼叫之前得到初始化,即使變數散步於方法定義之間。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Test
{
public static
|