scala 繼承extends,with淺見

2021-08-15 13:28:58 字數 935 閱讀 1341

近來學習scala,在繼承這一塊有一點小小的發現,遂記錄下來,以備以後複習之用。

1,當with放在子類定義的後面時,輸出的結果為:300和150

class animal 

class tiger extends with animal

object overridfield

}

2,當去掉with用子類直接繼承父類時,輸出的結果卻變成了:0和150

class animal 

class tiger extends animal

object overridfield

}

3、當子類裡面的重寫父類的方法去掉時,無論是否有with輸出的結果都是:200和100

class animal 

class tiger extends animal

object overridfield

}

為什麼都是繼承,結果會有這麼大的差異呢?

通過debug發現:

第一種情況,with在子類定義完之後,先執行子類再執行父類,這時父類中的方法會自動接收覆蓋後的屬性即weight為150,doubleweight為300;

第二種情況在沒有with的情況下,會先執行父類,這時因為子類override的存在weight還會用覆蓋的值,但此時後沒有經過子類進行覆蓋賦值,預設weight為0,所以doubleweight為0,等父類執行完成後在執行子類,所以最後weight為150;

第三種情況,因為子類中沒有對父類進行覆蓋及其它操作,所以最後都是父類的值,即weight為100,doubleweight為200。

scala 繼承 多型

繼承可以解決 復用 即當多個類存在相同的屬性 變數 和方法時,可以從這些類中抽象這些相同的屬性和方法,所有的子類不需要重新定義這些屬性和方法,只需要通過 extends 語句來宣告繼承父類即可 通過以上我們知道了在scala類中定義的屬性,底層都被私有化了,但是可以通過底層提供的setter和get...

scala 基礎之類繼承 04

建立extendsscala.scala類 華中科技大學電氣學院聚變與等離子體研究所 version v1.0 author victor contact 1650996069 qq.com 2018 2020 software intellij idea file extendsscala tim...

scala 學習筆記十二 繼承

1 介紹 繼承是物件導向的概念,用於 的可重用性。可以通過使用extends關鍵字來實現繼承。為了實現繼承,乙個類必須擴充套件到其他類,被擴充套件類稱為超類或父類。擴充套件的類稱為派生類或子類。scala支援各種型別的繼承,包括單一,多層次,多重和混合。可以在類中使用單一,多層次和層次結構。多重和混...