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