物件導向 5)abstract 抽象與多型基礎

2021-10-18 20:37:13 字數 3939 閱讀 6341

object類是所有類的父類

object類中有幾個方法

tostring() 返回當前物件本身的有關資訊,按字串物件返回

equals()比較兩個物件是否是同乙個物件

比較兩個物件是否是同乙個物件,是則返回true

操作符==

簡單資料型別,直接比較值。如1==2

引用型別,比較兩者是否為同一物件

hashcode() 返回物件的雜湊**值

生成隨機的雜湊值

getclass()獲取當前物件所屬的類資訊,返回class物件

abstract關鍵字建立抽象類 例如 public abstract class 類名{}

abstract也可用於方法——抽象方法

抽象方法沒有方法體

抽象方法必須在抽象類裡

抽象方法必須在子類中被實現,除非子類是抽象類

public abstract 方法返回值 方法名();

記住抽象方法不能有大括號也就是不能有方法體

子類可以重寫父類的抽象方法。

例如定義個抽象寵物類

建立抽象方法跑 建立狗類 繼承寵物類 重寫抽象方法跑

首先寵物類:

public

abstract

class

petpublic

void

setname

(string name)

}

抽象方法後一定不能有方法體

狗類:

public

class

dogextends

pet}

繼承父類並重寫方法

編寫測試類:

public

class

testpet

}

結果:狗正在跑

final關鍵字的作用在類中使用

public final class 類名{}

代表此類為最終類,不能被其他類繼承

public final 方法返回值 方法名(){}

代表此方法不能被重寫

final在屬性變數中代表常量

多型:同乙個引用型別,使用不同例項而執行不同操作

編寫具有繼承關係的父類和子類

子類重寫父類方法

使用父類的引用指向子類的物件

例如給寵物餵食是需要乙個主人類,正常的操作是

狗類乙個吃的方法,企鵝類乙個吃的方法,然後主人類中乙個餵狗的方法 乙個喂企鵝的方法

但是使用多型就可以省去主人的餵狗方法而是直接餵成寵物類,前提條件 企鵝和狗必須都屬於寵物類

定義抽象寵物類:

public

abstract

class

petpublic

void

setname

(string name)

public

intgethealth()

public

void

sethealth

(int health)

public

intgetlove()

public

void

setlove

(int love)

}

其中sett和get方法可以忽略不計因為這裡只顯示多型的使用。

首先定義抽象方法吃

狗類

public

class

dogextends

petpublic

void

setstrain

(string strain)

@override

public

void

eat(

)

狗類繼承父類寵物類並重寫吃的方法

public

class

penguin

extends

petpublic

void

set***

(string ***)

@override

public

void

eat(

)

企鵝繼承父類寵物類並重寫吃的方法

主人類

public

class

master

使用父類作為方法形參實現多型

方法體中引用父類的吃方法

測試類

public

class

testmaster

public

void

setstrain

(string strain)

@override

public

void

print()

企鵝類

public

class

penguin

extends

petpublic

void

set***

(string ***)

@override

public

void

print()

主人類:

public

class

master

else

if(typeid==2)

return pet;

}}

這裡直接以父類為返回值把控制台輸入的編號作為引數傳入方法, 然後判斷如果輸入為1 寵物物件為狗型別 則返回狗的print方法

輸入2 寵物物件為企鵝型別返回企鵝的print方法

測試類:

public

class

testmaster

public

void

setstrain

(string strain)

public

void

playplate()

}

企鵝類:

public

class

penguin

extends

petpublic

void

set***

(string ***)

}

主人類:

public

class

master

else

if(pet instanceof

penguin)}

}

利用instanceof運算子判斷是否一致

如果不一致則要使用強制型別轉換

測試類:

public

class

testmaster

{public

static

void

main

(string[

] args)

{ pet dog=

newdog()

; pet penguin=

newpenguin()

; master master=

newmaster()

; master.

play

(dog)

; master.

play

(penguin)

;

物件導向5 抽象類(abstract)

1.抽象類 abstract 1.1抽象類 語法 public abstract class 類名 1.2抽象方法 語法 public abstract 返回值型別 發放名 引數列表 例 public abstract void print 注意 抽象發放有abstract修飾,並且抽象發放沒有方法...

物件導向 抽象

物件導向分析與設計的主要任務是,找出類和物件,構建物件模型。物件模型的主要要素 抽象 封裝 模組化與層次結構。物件模型的次要要素 型別 併發 持久。抽象描述了乙個物件的基本特徵,可以將這個物件與所有其他型別的物件區分開來,因此提供了清晰定義的概念邊界,它與觀察者的角度有關。抽象關注乙個物件的外部檢視...

物件導向 抽象

物件導向分析與設計的主要任務是,找出類和物件,構建物件模型。物件模型的主要要素 抽象 封裝 模組化與層次結構。物件模型的次要要素 型別 併發 持久。抽象描述了乙個物件的基本特徵,可以將這個物件與所有其他型別的物件區分開來,因此提供了清晰定義的概念邊界,它與觀察者的角度有關。抽象關注乙個物件的外部檢視...