W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
類是創(chuàng)建對(duì)象的藍(lán)圖,對(duì)象是類的具體實(shí)例。
類定義包括字段聲明和方法定義。
字段用于存儲(chǔ)對(duì)象的狀態(tài),方法可以提供對(duì)字段的訪問,并更改對(duì)象的狀態(tài)。
讓我們從創(chuàng)建Book對(duì)象的藍(lán)圖的一個(gè)簡單示例開始:
class Book
前面的Scala聲明對(duì)應(yīng)于此Java聲明:
public class Book { }
定義類后,您可以使用關(guān)鍵字new創(chuàng)建類中的對(duì)象。
要?jiǎng)?chuàng)建Book的實(shí)例,您可以鍵入以下內(nèi)容:
new Book
這同樣的效果,如下所示︰
new Book()
以下代碼創(chuàng)建一個(gè)類來表示形狀。
我們定義了一個(gè)名為Shape
的超類型,它有一個(gè)計(jì)算形狀面積的方法區(qū)域。
class Shape { def area:Double = 0.0 }
以下代碼為 Rectangle
和 Circle
創(chuàng)建類。
class Rectangle(val width:Double,val height:Double) extends Shape { override def area:Double = width*height } class Circle(val radius:Double) extends Shape { override def area:Double = math.Pi*radius*radius }
每個(gè)類都接受一些參數(shù)并擴(kuò)展 Shape
,然后覆蓋 Shape
的方法。
子類型保證具有超類型的所有成員。
更改超類的方法的實(shí)現(xiàn)稱為覆蓋。
我們不能改變 Rectangle
的寬度和高度以及 Circle
對(duì)象的半徑,因?yàn)槿绻撟侄问且粋€(gè)val
,Scala只會(huì)生成一個(gè)getter方法。
這是封裝的示例。在封裝中,對(duì)象的字段只能通過其方法訪問。
我們可以編寫接受Shape實(shí)例的代碼,然后將其傳遞給Rectangle
或Circle
的實(shí)例:
def draw(s:Shape)
現(xiàn)在,考慮對(duì)這個(gè)函數(shù)的兩個(gè)調(diào)用,像這樣:
val circle = draw(new Circle(3)) val rectangle = draw(new Rectangle(2,3))
繼承保證任何我們可以在Shape實(shí)例上調(diào)用的方法都將在子類型中定義。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: