好程式設計師大資料教程Scala系列之繼承
好程式設計師大資料教程 Scala系列之 繼承
1. 擴充套件類
在Scala中擴充套件類的方式和Java一樣都是使用extends關鍵字
可以把類宣告為final,使之不能擴張
也可以把單個方法或者欄位宣告為final,以確保它不能被重寫,注意和Java的不同,Java中final修飾的欄位意味著不可變。
5.3.2. 重寫方法
在Scala中重寫一個非抽象的方法必須使用override修飾符
在子類中呼叫超類的方法,使用super,和Java一致。
5.3.3.protected修飾的欄位和方法
被protected修飾的欄位或者方法,可以被其子類訪問;
與Java不同的是,protected修飾的成員對於類所屬的包是不可見的;
protected[this],訪問許可權僅限當前的物件
可以使用包修飾符改變protected修飾的成員的可見性
5.3.3. 型別檢查和轉換
|
Scala |
Java |
測試某個物件是否屬於給定的類 |
obj.isInstanceOf[C] |
obj instanceof C |
強制型別轉換 |
obj.asInstanceOf[C] |
(C)obj |
獲取物件的類資訊 |
classOf[C] |
C.class |
5.3.4. 超類的構造
下面程式碼定義了一個子類和一個呼叫超類構造器的主構造器
class Employ(name: String, age: Int, val Salary:Double) extends Person (name,age)
下面的程式碼展示類的繼承,以及介面的實現等
object
ClassDemo {
def
main
(args: Array[String]) {
val
h =
new
Human
println
(h.
byScala
())
}
}
//相當於Java的介面
trait
Coding{
def
byJava
(flag : Boolean): Unit ={
if
(flag)
{
println
(
"I can code by Java"
)
}
else
{
println
(
"I can't code by Java"
)
}
}
//未被實現的方法預設為抽象方法
def
byScala
(): String
}
//抽象類
abstract
class
Animal {
def
run
(): Int
val
name: String
}
class
Human
extends
Animal
with
Coding{
val
name =
"abc"
//列印幾次"ABC"?
val
t1,t2,(a, b, c) = {
println
(
"ABC"
)
(
1
,
2
,
3
)
}
println
(a)
println
(t1._
1
)
//在Scala中重寫一個非抽象方法必須用override修飾
override
def
byJava
(flag: Boolean): Unit = {
println
(
"Coding by Java and Scala"
)
}
def
byScala
(): String={
"coding by Scala"
}
//在子類中重寫超類的抽象方法時,不需要使用override關鍵字,寫了也可以
def
run
(): Int = {
1
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2659738/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料教程Scala系列之類程式設計師大資料
- 好程式設計師大資料教程分享Scala系列之閉包程式設計師大資料
- 好程式設計師大資料教程Scala系列之高階函式程式設計師大資料函式
- 好程式設計師大資料分享Scala系列之柯里化程式設計師大資料
- 好程式設計師大資料教程分享Scala系列之Option_偏函式_String程式設計師大資料函式
- 好程式設計師大資料教程分享Scala系列之檔案以及正規表示式程式設計師大資料
- 好程式設計師大資料教程Scala系列之方法的巢狀和方法多型程式設計師大資料巢狀多型
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料教程Scala系列之隱式轉換和隱式引數程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之基礎篇程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師前端教程css中可被繼承和不可被繼承的屬性程式設計師前端CSS繼承
- 好程式設計師大資料教程分享之Hadoop優缺點程式設計師大資料Hadoop
- 好程式設計師大資料教程分享實用的大資料之陣列程式設計師大資料陣列
- 好程式設計師web前端教程之JS繼承實現方式解析程式設計師Web前端JS繼承
- 好程式設計師web前端教程JavaScript系列之HTTP程式設計師Web前端JavaScriptHTTP
- 好程式設計師大資料教程分享大資料之流程控制程式設計師大資料
- 好程式設計師Java教程系列之異常定義程式設計師Java
- 好程式設計師大資料教程分享:HDFS基本概念程式設計師大資料
- 好程式設計師大資料學習路線分享Scala分支和迴圈程式設計師大資料
- 好程式設計師分享JavaScript六種繼承方式詳解程式設計師JavaScript繼承
- 好程式設計師Java培訓之泛型繼承原理與用法詳解程式設計師Java泛型繼承
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料學習資料之YARN資源管理程式設計師大資料Yarn
- 好程式設計師大資料教程分享HadoopHDFS操作命令總結程式設計師大資料Hadoop
- 好程式設計師大資料教程:SparkShell和IDEA中編寫Spark程式程式設計師大資料SparkIdea
- 好程式設計師Java實用教程系列之物件的轉型程式設計師Java物件
- 好程式設計師大資料學習路線分享scala單列和伴生物件程式設計師大資料物件
- Python - 物件導向程式設計 - 三大特性之繼承Python物件程式設計繼承
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料筆記之:Hadoop叢集搭建程式設計師大資料筆記Hadoop
- 好程式設計師Python教程系列分享之Python語言元素之運算子程式設計師Python