Java面向對象--類

一、面向對象

  1. 面向對象的特徵:
    1)封裝:是類的一個重要的特徵,它將數據和行爲都打包寫在同一個類中,在對於使用這個類的其他程序來說,會隱藏自己的具體實現方式。
    2)繼承:在創建新的類的時候,使用現有的類作爲模板,進行功能的擴充和改進。
    3)多態:可以將函數的形參定義爲一個父類類型,而在真正調用該父類類型的所有子類對象都可以傳入,根據傳入子類對象不同,函數可以運行多種形態。
  2. 面向對象的優點:
    1)封裝性好
    2)易於維護
    3)易於擴展
    4)代碼質量好

二、類

  1. 定義類

    [類修飾符] class 類名稱{
    	//成員變量
    	[修飾符] 數據類型 成員變量名稱;
    	
    	//成員方法
    	[修飾符] 返回值的數據類型 方法名(參數1, 參數2,······, 參數n){
    		語句塊;
    	}
    }
    
  2. 類修飾符

    修飾符 含義
    public 公共類聲明,可以被任何對象訪問
    abstract 抽象類,沒有實現方法,需要子類提供方法的實現,所以不能夠創建該類的實例
    final 最終類聲明,即非繼承類,不能夠被其他的類繼承
    缺省 缺省修飾符時,則表示只有在相同包中的對象才能使用這樣的類

    一個類其實可以擁有多個修飾符,且並沒有先後順序之分,但是abstractfinal相互對立,所以不可以同時應用在一個類的定義。

  3. 成員變量
    一個成員變量描述了類的內部信息,成員變量可以是基本類型變量,也可以是對象、數組等其他引用型數據。
    其定義格式如下:

    [修飾符] 變量類型 變量名 [= 初值];
    

    成員變量修飾符:

    修飾符 含義
    public 公共訪問控制符,可以被任何對象方法訪問
    private 私有訪問控制符,指定變量只允許自己類的方法訪問,其他任何類(包括子類)中的方法均不能訪問此變量
    protected 保護訪問控制符,指定該變量只可以被它自己的類及其子類或同一包中的其他類訪問,在子類中可以覆蓋此變量
    缺省 缺省訪問控制符,同一個包其他類可以訪問此成員變量,但是其他包中的類不可以訪問該成員變量
    final 最終修飾符,指定此變量的值不能改變
    static 靜態修飾符,指定該變量被所有對象共享,即所有的實例都可以使用該變量
    transient 過度修飾符,指定該變量是一個系統保留,暫無特別作用的臨時性變量
    volatile 易失修飾符,指定該變量可以同時被幾個線程控制和修改

    除了訪問控制修飾符有多個以外,其他的修飾符都只有一個,一個成員變量可以被兩個以上的修飾符同時修飾,但是有些修飾符不能同時定義的。

  4. 成員方法
    類的方法是用來定義類的成員變量進行操作的,是實現類內部功能的機制,同時也是類與外界進行交互的重要窗口。

    [修飾符] 返回值數據類型 方法名(參數1, 參數2, ..., 參數n){
    	語句塊
    	return [表達式];
    }
    

    成員方法修飾符:

    修飾符 含義
    public 公共訪問控制符,可以被任何對象方法訪問
    private 私有訪問控制符,指定變量只允許自己類的方法訪問,其他任何類(包括子類)中的方法均不能訪問此方法
    protected 保護訪問控制符,指定該方法只可以被它自己的類及其子類或同一包中的其他類訪問,在子類中可以覆蓋此方法
    缺省 缺省訪問控制符,同一個包其他類可以訪問此成員方法,但是其他包中的類不可以訪問該成員方法
    final 最終修飾符,指定此方法不能被覆蓋
    static 靜態修飾符,指定不需要實例化一個對象就可以調用的方法
    abstract 抽象修飾符,指定該方法只聲明,未實現,需要在子類中被實現
    synchronized 同步修飾符,在多線程程序中,該修飾符用於對同步資源加鎖,防止其他線程訪問,運行結束後解鎖
    native 本地修飾符,指定此方法的方法體使用其他語言在程序外部編寫的

    成員方法與成員變量一樣,都可以有多個修飾符,都可以使用兩個及以上的修飾符來進行修飾,但是,有些修飾符之間是互斥的,不能夠同時修飾。

  5. 成員變量和局部變量的區別
    類中定義的變量是成員變量,但是方法中定義的變量是局部變量。

    – 成員變量是屬於類的,但是局部變量是在方法中定義的變量,或者是方法中的參數,成員變量可以被publicprivatestatic等修飾符所修飾,但是局部變量則不能夠被控制修飾符和static所修飾。但是成員變量和局部變量都可以被final修飾。
    – 從存儲方式上看,成員變量是對象的一部分,而對象是存在堆內存上的,但是局部變量是存在棧內存上的。
    – 生存時間,成員變量是屬於對象的,從對象被創建而存在,直到對象被銷燬的時候,才被銷燬。局部變量則是方法被調用的時候開始產生,而方法結束調用的時候,局部變量被銷燬。
    – 初賦值,成員變量如果沒有被初賦值的話,則會自動以類型的默認值賦初值(除被final但並未被static修飾的成員變量必須顯式賦值),但是局部變量不會自動賦值,必須顯示賦值後才能被使用。

三、對象的創建與使用

  1. 創建對象
    對象是類的實例
    創建對象:
    a.聲明指向“由類所創建的對象”的變量。
    b.利用new運算符創建新的對象,並且讓前面創建的對象指向這個新對象。

    Person man = new Person();//創建對象 
    

    此時,man這個指向對象的變量是儲存在棧內存中,但是後面對象即new Person()是存儲在堆內存上的,

  2. 對象的使用
    當我們創建了對象之後,就可以對對象進行一系列操作了,利用點運算符對對象成員進行訪問。
    例如:

    對象名.對象成員
    

    例如:

    public class demo{
    	private int height;//成員變量
    
    	public void setHeight(int height){//成員方法
        	this.height = height;
    	}
    	public int getHeight(){//成員方法
        	return this.height;
    	}
    
    	public static void main(String[] args) {
        	demo example = new demo();//創建對象example
        	example.setHeight(12);//調用對象成員
        	System.out.println(example.getHeight());//調用對象成員,並且輸出對象成員
    	}
    }
    
  3. 匿名對象
    當一個對象被創建之後,在調用該對象的方法的時候,可以不去定義對象的引用變量,而直接調用這個對象的方法,這樣子的對象被稱爲匿名對象。

    public class demo{
    	public demo print(){
        	System.out.println("你真帥!!!");
        	return null;
    	}
    
    	public static void main(String[] args) {
        	new demo().print();//並未定義對象的引用變量,而是直接調用該方法,這樣子的對象稱爲匿名對象,該方法執行之後,就會成爲垃圾。
    	}
    }
    

    使用匿名對象有兩種情況:
    a.如果對一個對象只需要進行一次方法調用,那麼就可以使用匿名對象。
    b.將匿名對象作爲實參傳遞給一個方法調用,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章