1. 程式人生 > >Java類與對象

Java類與對象

運行 add return 返回值 類的定義 程序模塊化 初始化 重要 無法

一、基本概念

  類是為了讓程序設計語言能更加清楚地描述日常生活中的事物。是對某一類事物+的描述,是抽象的。

  概念上的定義:而對象則是實際存在的屬該類事物的具體的個體,所以也稱為實例(instance)。

  對象是類的一個實例,是實實在在的個體,一個類可以有多個對象。

  面向對象程序設計思想的重點是類的設計而不是對象的設計。

  類是由數據成員和函數成員封裝而成的。數據成員則稱為類的屬性,函數成員則稱為類的行為。

  函數也稱為方法,它可以簡化程序的結構,也可以節省編寫的相同代碼的時間,達到程序模塊化的目的。

  使用方法 來編寫程序可以把特定的功能的程序代碼獨立出來,這樣可以簡化代碼、精簡重復代碼的程序流程。

  所以總結來說就是類將某事物的數據與相關功能封裝起來,形成一種特殊的數據結構,用以表達真實事物的一種抽象。

二、定義類

  1、定義類實際上就是聲明類的屬性與方法。

  結構:[類修飾符] class 類名稱

  {

    [修飾符] 數據類型 成員變量名稱;

    [修飾符] 數據類型 成員變量名稱;

    .

    .

    [修飾符] 返回值的數據類型 方法名(參數1,參數2,...)//方法可以不帶參數

    {

      語句序列;

      return [表達式];//返回數據類型可以是沒有返回值的類型void

    }

    .

    .

  }

  //其中[]表示的內容都可以省略

  2、分析類修飾符的用法

  類修飾符一共有四種分別是public、abstract、final、缺省

  一個類可以有多個修飾符,且無先後之分,但是abstract和final是相互對立,所以不能同時應用在一個類的定義中。

  一個.java文件中可以有多個class(類),但是只能有一個是用public修飾符修飾的,而且這個類的名稱必須與.java文件名相同。

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

  3、成員變量

   一個類的成員變量可以是簡單的變量,也可以是對象數組等結構型數據。

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

  4、分析成員屬性的修飾符

    成員屬性的修飾符有訪問控制符,靜態修飾符,最終修飾符,過度修飾符,易失修飾符

    一個成員變量可以被兩個以上的修飾符同時修飾,但遊戲王修飾符是不能同時定義在一起。

    在定義類的成員修飾符的時候,可以讀成員變量進行賦初值,表明成員變量的初始狀態,但對成員變量的操作只能放在方法中。

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

   5、類的成員方法。

    類的方法是用來定義對類的成員變量進行操作的,是實現類內部功能的機制,同時也是類與外界進行交互的重要窗口,聲明方法的格式如下:

    [修飾符] 返回值的數據類型 方法名(參數1,參數2,...)//可以不用添加參數

    {

      語句序列;

      return [表達式];//可以是沒有返回值的void型

    }

   6、分析成員方法的函數的修飾符

    修飾符有多種:包括訪問控制訪問修飾符,靜態修飾符,抽象修飾符,最終修飾符,同步修飾符和本地修飾符   

    同樣的是方法的修飾符也是可以同時有多個,但是互斥的修飾符不能同時出現。 

修飾符 含義
public 公共訪問控制符。指定該方法為公共的,它可以被任何對象方法訪問
private 私有訪問控制符。指定該方法只允許自己類的方法訪問,其他任何類(包括子類)中的方法均不能方法此方法。
protected 保護訪問控制符。指定該方法只可以被它的類及其或者同一包中的其他訪問
缺省 缺省訪問控制符,則表示在同一個包中的其他類可以訪問此成員方法,而其他包中的類不能訪問該成語方法
final 最終修飾符。指定該方法不能被重載
static 靜態修飾符。指定不需要實例化一個對象就可以激活的方法
abstract 抽象修飾符。指定該方法只聲明方法頭,而沒有方法體,抽象方法需在子類中被實現
synchronized 同步修飾符。在多線程程序中,該修飾符用於在運行前,對它所屬的方法加鎖,以防止其他線程訪問,運行結束後解鎖
native 本地修飾符。指定此方法的方法體是用其他語言(如C)在程序外部編寫的。

   7、總結一下四種訪問修飾符的使用情況 

作用域 當前類 同一包(package) 子孫類 其他包(package)
public
protected ×
friendly(缺省) × ×
private × × ×

    friendly的情況是不寫訪問修飾符,就是缺省的情況,但是在Java中是不存在friendly這種情況的說法,它是 源自C++。

    訪問修飾符修飾class時只能是public,和缺省。並不鞥使用protected和private

    而在使用訪問修飾符修飾類的屬性時,一般使用private,通過getter和setter方法來訪問類的屬性。

   8、成員變量與局部變量的區別

    由類和方法的定義可以,在類和方法中均可以定義屬於自己的變量。類中定義的變量是成員變量,而方法中定義變量是局部變量。

    (1)、從語法形式上看,成員變量是屬性類的,而局部變量是在方法中定義的變量或者是方法的參數;成員變量可以被public、private、 static等修飾符所修飾,而局部變量則不能被訪問修飾符及static所修飾;成員變量和局部變量都可以被final所修飾。

    (2)、從變量在內存中的儲存方式上看,成員變量是對象的一部分,而對象是存在於堆內存的,而局部變量是存在於棧內存的。

    (3)、從變量在內存中的生存時間上,成員變量是對象的一部分,它隨著對象的創建而存在,而局部變量隨著方法的調用而產生,隨著方法的結束而自動消失

    (4)、成員變量如果沒有被賦值,則會自動以類型的默認值賦值(有一種情況例外,被final西施但沒有被static修飾的成員變量必須顯式地賦值);而局部變量則不會自動賦值,必須顯式地賦值後才能使用。

三、對象的創建與使用

  1、對象時整個面向對象程序設計的理論基礎。

  2、一個對象的聲明周期:創建—>使用—>銷毀

  3、創建某類的對象步驟:

  (1)、聲明指向‘由類所創建的對象’的變量

  (2)、利用new運算符創建新的對象,並指派給前面所創建的變量

  例如:Object obj = new Object();//從內存的角度來分析就是,在棧內存中定義了一個變量obj,用來指向通過new運算符在堆內存中創建的一堆Object對象。也就是說變量obj是對存放在堆內存中對象的引用變量,因為它是指向Object類所創建的對象,所以可將視為‘‘對象的名稱”,因而簡稱對象;事實上,obj變量只是對象的名稱,它是指向對象實體的變量,而非對象本身。

  4、因為在方法中定義的變量必須進行初始化,否則無法通過編譯,所以當一個對象被創建時,會按照其的基本類型來成員變量的初始值。

  5、通過對象來引用對象成員的格式如下:

    對象.對象成員

  6、匿名對象就是,不定義對象的引用變量,直接用new創建的對象來調用對象的方法等。如new Object().xxx();

  7、使用匿名對象的兩種情況:

    (1)、如果對一個對象只需要進行一次的方法調用,那麽就可以使用匿名對象。

    (2)、將一個匿名對象作為參數傳給方法調用時,可以使用。

  

  

    

Java類與對象