前言 :
Scala 是一個可直譯、編譯、靜態、運行於 JVM 之上、可與 Java 互操作、融合物件導向編程特性與函式編程風格的程式語言. Scala 的繼承作了一些限制,這使你在使用繼承前必須多一份思考.
無參數方法 :
你定義了一個 Ball 類別 :
- class Ball(r: Double) {
- def radius = r
- }
- val ball = new Ball(10.0)
- println(ball.radius)// 顯示 10.0
- class Ball(val radius: Double)
由於方法與資料成員屬於同一個名稱空間,所以同一個類別中,資料成員不可以與方法是相同的名稱. 例如 :
- class Ball { // 這個類別會編譯錯誤
- private val radius = 10
- def radius = 20
- }
- class Ball(r: Double) {
- def volume = 4 * Math.Pi * Math.pow(r, 3) / 3
- override def toString = "radius: " + r +
- "\nvolume: " + volume
- }
- class IronBall(r: Double) extends Ball(r)
- val ball = new IronBall(10.0)
- println(ball.volume)
- class IronBall(r: Double) extends Ball(r) {
- override val volume = 4 * Math.Pi * Math.pow(r, 3) / 3
- }
- class Ball(r: Double) {
- val volume = 4 * Math.Pi * Math.pow(r, 3) / 3
- override def toString = "radius: " + r +
- "\nvolume: " + volume
- }
- class IronBall(r: Double) extends Ball(r) {
- // error, method volume is not stable
- override def volume = 4 * Math.Pi * Math.pow(r, 3) / 3
- }
沒有留言:
張貼留言