自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Scala中定義final成員

開發(fā) 后端
本文節(jié)選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第十章。Scala是一種針對 JVM 將函數(shù)和面向?qū)ο蠹夹g(shù)組合在一起的編程語言。

設(shè)計一個繼承層級的某些時候,你想要確保成員不被子類重載。Scala里和Java里一樣,通過添加final修飾符給成員來做到。例如,你可以在ArrayElement的demo方法前放一個final修飾符,如代碼10.7中展示的那樣。

  1. class ArrayElement extends Element {  
  2.  final override def demo() {  
  3.   println("ArrayElement's implementation invoked")  
  4.  }  
  5. }  

代碼 10.7 聲明final方法

51CTO編輯推薦:Scala編程語言專題

有了這個版本的ArrayElement,嘗試在它的子類,LineElement,重載demo方法,將編譯不過:

  1. elem.scala:18: error: error overriding method demo  
  2. in class ArrayElement of type ()Unit;  
  3. method demo cannot override final member  
  4. override def demo() {  
  5. ˆ  
你或許還多次想確保整個類都沒有子類。要做到這點只要簡單地通過在類的聲明上添加final修飾符把整個類聲明為final即可。如,代碼10.8展示了如何聲明ArrayElement為final:

  1. final class ArrayElement extends Element {  
  2.  override def demo() {  
  3.   println("ArrayElement's implementation invoked")  
  4.  }  
  5. }  
代碼 10.8 聲明final類

有了這個版本的ArrayElement,任何定義子類的嘗試都將失敗:

  1. elem.scala: 18: error: illegal inheritance from final class 
  2. ArrayElement  
  3. class LineElement extends ArrayElement {  
  4. ˆ  

我們現(xiàn)在將去掉final修飾符和demo方法,并回到早先實現(xiàn)的Element家族。我們將把我們本章剩余部分的注意力集中在完成布局庫的工作版本上。

【相關(guān)閱讀】

  1. Scala程序中如何實現(xiàn)多態(tài)和動態(tài)綁定
  2. Scala學習:調(diào)用超類構(gòu)造器和override修飾符的使用
  3. Scala:重載方法和字段及定義參數(shù)化字段
  4. Scala程序中的擴展類
  5. 在Scala中定義無參數(shù)方法

責任編輯:book05 來源: Artima
相關(guān)推薦

2009-07-22 07:53:00

Scala無參數(shù)方法

2009-07-21 17:21:57

Scala定義函數(shù)

2009-11-16 17:04:46

Inside Scal

2010-01-18 17:57:02

靜態(tài)數(shù)據(jù)

2023-11-03 12:33:20

GoGORM

2024-12-13 09:26:35

2009-07-22 09:22:20

Scala工廠對象

2009-12-11 10:42:00

Scala講座類定義構(gòu)造函數(shù)

2023-04-03 07:08:28

C++函數(shù)模板

2023-06-30 17:56:31

Scala元組

2009-08-03 18:26:18

C#定義接口成員

2009-07-20 16:56:51

Scala類的定義

2009-07-21 12:24:01

Scala先決條件添加字段

2009-09-22 10:15:42

PersistentQScala

2009-07-08 16:52:29

ScalaScala教程

2009-07-21 12:47:04

Scala私有字段定義操作符

2012-06-08 09:28:15

EclipseScalaAndroid

2011-06-20 16:54:40

Qt Widget model

2009-09-22 09:59:40

QueueCollecScala

2009-07-22 07:53:00

Scala擴展類
點贊
收藏

51CTO技術(shù)棧公眾號