面向對象(一)

面向對象(一)

Java計算機高級語言

一.面向對象理論

1.對象

對象,是一個抽象概念,英文‘object’。表示任意存在屬性的事物。世間萬物皆對象!現實生活中隨處可見的就是對象,對象是事物存在的實體。

通常將對象分為兩個部分,即靜態部分與動態部分,靜態部分被稱為“屬性”,任何對象都具有自身屬性,屬性不僅是客觀存在的,而且還是不被忽視的,例如人的性別。而動態部分是指對象的行為,即對象執行的動作,例如人的行走,跑步。

2.類

類是封裝對象的屬性和行為的載體,反過來說具有相同屬性和行為的一類實體被稱為類。例如,把雁群比作大雁類,那麼大雁類就具備喙,翅膀和爪等屬性,覓食,飛行和睡覺等行為。

在Java語言中,類包括對象的屬性和方法。類中的對象的屬性是以成員變量的形式定義的,而行為則是以方法的形式定義的。

3.特點

面向對象的三大特點:

  • 封裝性
  • 繼承性
  • 多態性

1.封裝

封裝是面向對象的核心思想,即把對象的屬性和行為封裝成整體,其載體就是類,類通常會對客戶隱藏其中的細節部分,這就是封裝的思想。例如,用戶使用計算機時,只需要移動鼠標操作鍵盤即可實現一些功能,而不是完全瞭解計算機是如何工作的。

封裝思想保證了類內部數據的結構完整性,使用該類的用戶不能輕易的直接操作此數據結構,只能操作允許公開的數據,這樣就避免了外部操作對內部數據的影響,提高了程序代碼的可維護性。

2.繼承

矩形,菱形,平行四邊形和梯形都是四邊形,因為四邊形與他們具有共同的特性:四條邊。只要將四條邊適當延申,就可以得到上述圖形。Java中,可以把平行四邊形類看作是繼承了四邊形類後產生的類,其中將類似於平行四邊形這樣的類統稱為子類,將類似於四邊形這樣的類統稱為父類,值得注意的是:在闡述平行四邊形於四邊形之間的關係時,可以說平行四邊形是繼承了四邊形的屬性而產生的特殊四邊形。在Java中就可以理解為:子類的實例都是父類的實例,但不能說父類的實例是子類的實例。

綜上所述,繼承是實現重複利用的重要手段,子類繼承父類,複用父類屬性和行為的同時又添加了子類特有的屬性和行為。

3.多態

將父類對象應用於子類的特徵就是多態。例如,首先創建一個父類螺絲,螺絲類有兩個屬性:螺絲粗細及螺紋密度。在創建兩個子類,長螺絲類和短螺絲類,它們都繼承了螺絲類。這樣長螺絲類與短螺絲類不僅具有相同的特徵(粗細相同並且螺紋密度相同),還具備了不同的特徵(長短不同)。綜上所述,一個螺絲類衍生出不同的子類,而子類繼承父類的特徵時,也可以具備自己的特徵,並且能夠實現不同的效果,這就是多態的體現。

二.類與對象

1.成員變量

Java中對線的屬性也成為成員變量,成員變量的定義與普通變量一樣。語法如下:

數據類型 變量名 = 值;

其中,值表示可選,定義變量時可以直接賦值,也可也不為其賦值。

為了瞭解成員變量,首先定義各異鳥類--Brid類,成員變量對應類對象的屬性,在Brid類中設置四個成員變量,分別是wing,claw,beak和feather,分別對應鳥的翅膀,爪子,喙和羽毛。代碼如下:

面向對象(一)

鳥類

以上代碼可以看到在Java中使用class關鍵字來定義類,Brid是類的名稱。同時在Brid類中定義四個成員變量,它的類型可以設置為Java中的合法的數據類型,其中成員變量就是普通變量,可以設置初始值,也可以不設置初始值。如果不設置初始值,則會有默認值。Java中常見類型的默認值如下所示

  • byte,short,int,long為0
  • fioat,double為0.0
  • char為 ’‘
  • boolean為false
  • 引用類型,例如String為null

2.成員方法

在Java語言中,成員方法對應類對象的行為,它主要用來定義類可執行的操作,它是包含一系列語句的代碼塊

1.成員方法的定義

定義成員方法的語法格式如下:

權限修飾符 返回值類型 方法名(參數類型 參數名)【throws 異常類型】{
	---方法主體
	return//返回值
}
 

其中權限修飾符可以是private,public,protected中的任意一個,也可以不寫,主要用來控制方法的訪問權限,關於權限問題將在以後章節詳細講解;

返回值類型用來定義指定方法完成運行後返回數據的類型,可以是任何類型,如果方法不需要返回值,則用void關鍵字。

一個成員方法既可以有參數,也可以沒有參數,參數可以是對象,也可以是基本數據類型的變量。

類如定義一個飛翔的方法在Brid類中,代碼如下:

面向對象(一)

飛的方法

注:方法的定義必須在某個類中,定義的方法如果沒用使用訪問修飾符,那麼則默認為缺省(即只能在本類的同一個包中的類中進行訪問。)

如果方法設置有返回值,則使用return關鍵字返回一個指定類型的數據,並且返回值類型要與方法返回值的類型一致,如上代碼所示。

2.成員方法的參數

調用方法時可以給該方法傳遞一個或多個值,傳給放大的值叫做實參,在方法內部,接受參數的變量叫形參,形參的聲明語法與變量的聲明語法一樣,形參只在方法內部有效。Java中方法的參數主要有三種,分別是值參數,引用參數和不定長參數

  • 值參數表明實參與形參之間按值傳遞。代碼如下:
面向對象(一)

值參數

  • 引用參數表明參數類型時數組或其他引用類型。代碼如下:
面向對象(一)

引用參數

  • 不定長參數表明聲明方法時,有若干個相同類型的參數,代碼如下:
面向對象(一)

不定長參數

3.構造方法

在類中除了成員方法之外,還存在一種特殊類型的方法,那就是構造方法,構造方法是一個與類同名的方法,對象的創建就是通過構造方法完成的。每當類實例化一個對象時,類都會自動調用構造方法。

構造方法有如下幾個特點:

  • 構造方法沒有返回值類型,也不能定義為void。
  • 構造方法的名稱與類名相同。
  • 構造方法的主要作用時完成對象的初始化工作,它能把定義對象的參數傳給對象成員。

構造方法的定義語法如下:

class Book{
	public Book(){//構造方法
		
	}
}

在構造方法中可以為成員變量賦值,這樣實例化一個類的對象時,相應的成員變量也將被初始化。如果類中沒有明確寫出構造方法,那麼編譯時會自動使用一個不帶參數的默認方法。代碼如下:

面向對象(一)

無參構造方法

4.局部變量

如果在成員方法內部定義一個變量,那麼這個變量被稱為局部變量。

局部變量在方法執行時創建,在方法結束後銷燬。局部變量在使用過程中必須進行賦值操作或被初始化,否則會出現編譯問題。

面向對象(一)

局部變量

5.this關鍵字

當類中的成員變量與成員方法中的參數重名時,方法中如何使用成員變量呢?首先來看一下重名會發生哪些問題。

面向對象(一)

變量名相同

Java語言中規定使用this關鍵字來代表本類對象的引用,this關鍵字被隱式地用於引用對象的成員變量和方法。代碼如下:

面向對象(一)

三.static關鍵字

1.靜態變量

很多時候,不同的類之間需要對同一個變量進行操作,例如水池,初始化為0,然後同時打開放水管及排水管兩個操作,會不同程度影響水池中的水量,這時就可以水池的中的水量可以認為是一個共享變量。在Java中如果把共享變量用static修飾,那麼該變量就是靜態變量。代碼語法如下:

public static int water = 0;

2.靜態方法

如果想要使用類中的成員方法,需要先將這個類進行實例化,但是有些時候不想或者無法創建類的對象時,還想要調用類中的方法才能夠完成業務邏輯,這種情況就可以使用靜態方法。代碼語法如下:

public static void name() {
		
}

3.靜態代碼塊

在類的成員方法之外,用static修飾代碼區域可以稱之為靜態代碼塊,定義一塊靜態代碼塊,可以完成類的初始化操作,在類聲明時就運行,代碼語法如下:

public class Pool {
	static {
		//此處編輯執行語句
	}
}

四.類的主方法

主方法時程序的入口點,它指定了程序是從何處開始,提供了程序的流向控制,Java編譯器通過main方法來執行程序,語法如下:

	public static void main(String[] args) {
		
	}
  • 主方法是靜態的,如果要在主方法直接調用其他方法,也必須是靜態方法。
  • 主方法沒用返回值
  • 主方法的形參為數組,可以使用.length來獲取參數個數

以上就是我們第四章Java面向對象的第一小節,感謝讀者翻閱,辛苦小夥伴點個贊哦。

面向對象(一)

真男人感謝您的點贊


分享到:


相關文章: