版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
通信數(shù)據(jù)分析與實戰(zhàn)Scala語言基礎(chǔ)第一章第1節(jié)2了解Scala的特點作用掌握Scala的下載安裝掌握IDEA的下載安裝學(xué)習(xí)目標(biāo)TARGETSpark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎,它是由Scala語言開發(fā)實現(xiàn)的,關(guān)于大數(shù)據(jù)技術(shù),本身就是計算數(shù)據(jù),而Scala既有面向?qū)ο蠼M織項目工程的能力,又具備計算數(shù)據(jù)的功能,同時Spark和Scala的緊密集成,我們將采用Scala語言開發(fā)Spark程序,所以學(xué)好Scala將有助于我們更好的掌握Spark框架Scala的概述Scala于2001年由洛桑聯(lián)邦理工學(xué)院(EPFL)的編程方法實驗室研發(fā),它由MartinOdersky(馬丁?奧德斯基)創(chuàng)建。目前,許多公司依靠Java進行的關(guān)鍵性業(yè)務(wù)應(yīng)用轉(zhuǎn)向或正在轉(zhuǎn)向Scala,以提高其開發(fā)效率、應(yīng)用程序的可擴展性和整體的可靠性。Scala的概述Scala的特點Scala是ScalableLanguage的簡稱,它是一門多范式的編程語言,其設(shè)計初衷是實現(xiàn)可伸縮的語言、并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。具體特性如右圖所示:面向?qū)ο蠛瘮?shù)式編程靜態(tài)類型擴展性高交互性好Scala的安裝流程Scala語言可以運行在Windows、Linux、MacOS等系統(tǒng)上。由于Scala是運行在JVM平臺上的,所以安裝Scala之前必須配置好JDK環(huán)境(JDK版本要求不低于1.5版本)。課程中使用的JDK版本是jdk1.8。Scala的安裝流程安裝JDK安裝Scala安裝IDEA安裝Scala插件(1)下載JDK(2)安裝JDK(3)配置JDK環(huán)境變量(4)JDK環(huán)境變量驗證JDK的安裝1、下載JDKJDK的安裝去官網(wǎng)下載對應(yīng)的javaJDK的版本1、下載JDKJDK的安裝選擇JDK8.0版本2、安裝JDKJDK的安裝2、安裝JDKJDK的安裝3、配置JDK的環(huán)境變量JDK的安裝我的電腦右擊選擇屬性頁面下拉選擇高級系統(tǒng)設(shè)置4、JDK的環(huán)境驗證JDK的安裝查看java版本:java-versionLinux的JDK環(huán)境在Hadoop中已經(jīng)安裝好了,無須安裝第二次(1)下載Scala安裝包(2)解壓Scala(3)配置Scala環(huán)境變量(4)Scala驗證Scala的安裝1、下載ScalaScala的安裝去官網(wǎng)下載對應(yīng)的Scala的版本Scala的安裝2、解壓scala-2.11.8.zip-ScalaScala的安裝3、配置Scala的環(huán)境變量我的電腦右擊選擇屬性頁面下拉選擇高級系統(tǒng)設(shè)置Scala的安裝3、配置Scala的環(huán)境變量Scala的安裝4、Scala驗證FinalShell-工具安裝FinalShell是一體化的的服務(wù)器,網(wǎng)絡(luò)管理軟件,不僅是ssh客戶端,還是功能強大的開發(fā),運維工具,充分滿足開發(fā),運維需求.特色功能:免費遠程服務(wù)器遠程桌面加速ssh加速本地化命令輸入框支持自動補全命令歷自定義命令參數(shù)FinalShell-工具安裝雙擊圖標(biāo)安裝,如果遇到windows安全提示請點擊確認(rèn)FinalShell-工具安裝同意協(xié)議FinalShell-工具安裝點擊下一步FinalShell-工具安裝設(shè)置安裝位置FinalShell-工具安裝安裝成功打開頁面效果(1)下載Scala-Linux安裝包(2)上傳至Linux-hadoop集群(3)解壓Scala(4)配置Scala環(huán)境變量(5)驗證ScalaScala的安裝Scala的安裝2、上傳解壓ScalaScala的安裝3、配置Scala的環(huán)境變量--1.編輯環(huán)境變量的配置文件vietc/profile
--2.設(shè)置內(nèi)容export
SCALA_HOME=/export/servers/scala-2.11.8export
PATH=$PATH:$SCALA_HOME/bin:
--3.生效配置文件source/etc/profileScala的安裝4、驗證Scala(1)下載Scala-Mac安裝包(2)解壓Scala(3)配置Scala環(huán)境變量(4)Scala驗證Scala的安裝Scala的安裝2、解壓Scala并配置Scala的環(huán)境變量-驗證--雙擊解壓Scala安裝包,移動到到Mac的主目錄下(如果找不到主目錄,可以使用快捷鍵Shit+Commond+H進入電腦主目錄)
--1.編輯環(huán)境變量的配置文件vi~/.bash_profile
--2.設(shè)置內(nèi)容export
PATH=安裝路徑/Scala/bin:--驗證scala打開終端輸入-scala-version工具介紹目前Scala的主流開發(fā)工具主要有兩種:分別是Eclipse工具和IDEA工具,我們可以在這兩個開發(fā)工具中安裝對應(yīng)的Scala插件進行Scala開發(fā)。由于IDEA工具可以自動識別代碼錯誤和進行簡單的修復(fù)、以及IDEA工具內(nèi)置了很多優(yōu)秀的插件,所以現(xiàn)在大多數(shù)的Scala開發(fā)程序員都會選擇IDEA作為開發(fā)Scala的工具。(1)官網(wǎng)下載IDEA安裝包(2)雙擊解壓安裝IDEA的安裝(1)官網(wǎng)下載IDEA安裝包IDEA的安裝(2)雙擊解壓安裝IDEA的安裝(2)雙擊解壓安裝IDEA的安裝(2)雙擊解壓安裝IDEA的安裝(1)下載Scala插件(2)在IDEA中導(dǎo)入(3)重啟IDEAScala的插件安裝(1)下載Scala插件Scala的插件安裝(2)在IDEA中導(dǎo)入Scala的插件安裝(2)在IDEA中導(dǎo)入Scala的插件安裝(3)重啟IDEAScala的插件安裝1.新建Scala項目和文件開發(fā)第一個Scala程序2.創(chuàng)建包和Scala類開發(fā)第一個Scala程序3、在HelloWorld.scala文件中編寫代碼開發(fā)第一個Scala程序objectHelloWorld{
defmain(args:Array[String]){
println("Hello,world!")
}}4、運行代碼開發(fā)第一個Scala程序48小結(jié)了解Scala的特點作用掌握Scala的下載安裝掌握IDEA的下載安裝通信數(shù)據(jù)分析與實戰(zhàn)Scala語言基礎(chǔ)第一章第2節(jié)50掌握Scala聲明變量掌握Scala的數(shù)據(jù)類型掌握Scala的運算符掌握Scala的控制結(jié)構(gòu)語句掌握Scala的方法和函數(shù)學(xué)習(xí)目標(biāo)TARGETScala的概述聲明值和變量Scala有兩種類型的變量,一種是使用關(guān)鍵字var聲明的變量,值是可變的;另一種是使用關(guān)鍵字val聲明的變量,也叫常量,值是不可變的。var值可變varname:String=“屠呦呦”val值不可變valage:Int=18Scala的數(shù)據(jù)類型Scala的數(shù)據(jù)類型數(shù)據(jù)類型描述Byte8位有符號補碼整數(shù)。數(shù)值區(qū)間為-128到127Short16位有符號補碼整數(shù)。數(shù)值區(qū)間為-32768到32767Int32位有符號補碼整數(shù)。數(shù)值區(qū)間為-2147483648到2147483647Long64位有符號補碼整數(shù)。數(shù)值區(qū)間為-9223372036854775808到9223372036854775807Float32位,IEEE754標(biāo)準(zhǔn)的單精度浮點數(shù)Double64位IEEE754標(biāo)準(zhǔn)的雙精度浮點數(shù)Char16位無符號Unicode字符,區(qū)間值為U+0000到U+FFFFString字符序列Booleantrue或falseUnit表示無值,和其他語言中void等同。用作不返回任何結(jié)果的方法的結(jié)果類型。Unit只有一個實例值,寫成()。Nullnull或空引用NothingNothing類型在Scala的類層級的最底端;它是任何其他類型的子類型。AnyAny是所有其他類的超類AnyRefAnyRef類是Scala里所有引用類(referenceclass)的基類Scala的運算符和重載Scala中算術(shù)操作符(+、-、*、/、%)的作用和Java是一樣的,位操作符(&、|、>>、<<)也是一樣的。特別強調(diào)的是,Scala的這些操作符其實是方法。例如,a+b其實是a.+(b)的簡寫。運算符描述實例+加號A+B運算結(jié)果為30-減號A-B運算結(jié)果為-10*乘號A*B運算結(jié)果為200/除號B/A運算結(jié)果為2%取余B%A運算結(jié)果為0Scala的運算符和重載運算符描述實例==等于(A==B)運算結(jié)果為false!=不等于(A!=B)運算結(jié)果為true>大于(A>B)運算結(jié)果為false<小于(A<B)運算結(jié)果為true>=大于等于(A>=B)運算結(jié)果為false<=小于等于(A<=B)運算結(jié)果為trueScala的運算符和重載運算符描述實例&&邏輯與(A&&B)運算結(jié)果為false||邏輯或(A||B)運算結(jié)果為true!邏輯非!(A&&B)運算結(jié)果為trueScala的控制結(jié)構(gòu)語句條件描述If(條件){}單條件If(條件){}else{}單條件If(條件){}elseIf(條件){}else{}多條件Scala的控制結(jié)構(gòu)語句循環(huán)類型描述for循環(huán)用來重復(fù)執(zhí)行一系列語句直到達成特定條件達成,一般通過在每次循環(huán)完成后增加計數(shù)器的值來實現(xiàn)。while循環(huán)運行一系列語句,如果條件為true,會重復(fù)運行,直到條件變?yōu)閒alse。do...while循環(huán)類似while語句區(qū)別在于判斷循環(huán)條件之前,先執(zhí)行一次循環(huán)的代碼塊。Scala的控制結(jié)構(gòu)語句For循環(huán)操作for(變量<-表達式/數(shù)組/集合){
循環(huán)體語句;}for(i<-0
to
9){
print(i+"")}
for(i<-0
to
9;ifi%2==0;ifi>5){
print(i+"")}Scala的控制結(jié)構(gòu)語句DoWhile循環(huán)操作do{
循環(huán)語句;}while(布爾表達式)do{print(x+"”)
x+=1}while(x<20)Scala的方法和函數(shù)在Scala中,它和Java一樣也是擁有方法和函數(shù)。Scala的方法是類的一部分,而函數(shù)是一個對象可以賦值給一個變量。換句話來說,在類中定義的函數(shù)即是方法。Scala中可以使用def語句和val語句定義函數(shù),而定義方法只能使用def語句。下面我們分別對Scala的方法和函數(shù)進行講解:Scala的方法方法定義deffunctionName([參數(shù)列表]):[returntype]={ functionbody
return[expr]}defadd(a:Int,b:Int):Int={ varsum:Int=0 sum=a+b returnsum}Scala的方法方法調(diào)用//沒有使用實例的對象調(diào)用格式functionName(參數(shù)列表)//方法使用實例的對象來調(diào)用,我們可以使用類似java的格式(使用“.”號)[instance.]functionName(參數(shù)列表)Scala的方法方法調(diào)用scala>:paste
#多行輸入模式的命令
objectTest{
defaddInt(a:Int,b:Int):Int={
varsum:Int=0
sum=a+b
returnsum
}
}
scala>Test.addInt(4,5)
res0:Int=9Scala的方法提升Scala方法的返回值類型可以不寫,編譯器可以自動推斷出來,但是對于遞歸方法來說,必須要指定返回類型。defm1(num:Int):Int={
if(num<=1)1
elsem1(num-1)*num}Scala的函數(shù)函數(shù)定義#Scala中的函數(shù)是一個對象,可以賦值給一個變量.valfunctionName=([參數(shù)列表])=>functionbodyvaladdInt=(a:Int,b:Int)=>a+b#函數(shù)調(diào)用和方法調(diào)用是一樣的addInt(10,20)Scala的方法轉(zhuǎn)換函數(shù)轉(zhuǎn)換定義val
f1=m_;//m代表定義好的方法scala>defm(x:Int,y:Int):Int=x*y #定義方法m:(x:Int,y:Int)Intscala>valf=m_f:(Int,Int)=>Int=(function2) #函數(shù)68小結(jié)掌握Scala聲明變量掌握Scala的數(shù)據(jù)類型掌握Scala的運算符掌握Scala的控制結(jié)構(gòu)語句掌握Scala的方法和函數(shù)通信數(shù)據(jù)分析與實戰(zhàn)Scala語言基礎(chǔ)第一章第3節(jié)70掌握數(shù)組的定義和操作掌握元組的定義和操作掌握集合的定義和操作學(xué)習(xí)目標(biāo)TARGETScala的數(shù)據(jù)結(jié)構(gòu)在編寫程序代碼時,經(jīng)常需要用到各種的數(shù)據(jù)結(jié)構(gòu),選擇合適的數(shù)據(jù)結(jié)構(gòu)可以帶來更高的運行或者存儲效率,Scala提供了許多數(shù)據(jù)結(jié)構(gòu),例如常見的[數(shù)組]、[元組]和[集合]等對于每一門編程語言來說,數(shù)組(Array)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,主要用來存儲數(shù)據(jù)類型相同的元素。Scala中的數(shù)組分為定長數(shù)組和變長數(shù)組,定義定長數(shù)組,需要使用new關(guān)鍵字,而定義變長數(shù)組時,則需要導(dǎo)包importscala.collection.mutable.ArrayBuffer。數(shù)組的定義Scala中的數(shù)組分為定長數(shù)組和變長數(shù)組,定義定長數(shù)組,需要使用new關(guān)鍵字,而定義變長數(shù)組時,則需要導(dǎo)包importscala.collection.mutable.ArrayBuffer。定義定長數(shù)據(jù)方式
newArray[T](數(shù)組長度)定義變長數(shù)據(jù)方式
ArrayBuffer[T]()數(shù)組的操作
定義數(shù)組追加操作插入操作刪除操作定義定長數(shù)組valarr1=newArray[Int](8)定義變長數(shù)組(需提前導(dǎo)包)valab=ArrayBuffer[Int]()追加元素:ab+=1追加定長數(shù)組:ab++=Array(6,7)追加變長數(shù)組:ab++=ArrayBuffer(8,9)在數(shù)組某個位置插入元素ab.insert(0,-1,0)刪除數(shù)組中的第一個元素ab.remove(0)數(shù)組的循環(huán)定義數(shù)組遍歷輸出轉(zhuǎn)換操作定義數(shù)組varmyArr=Array(1.9,2.9,3.4,3.5)定義數(shù)組valarr=Array(1,2,3,4,5,6,7,8,9)打印輸出所有的數(shù)組元素for(x<-myArr){print(x+"")}將偶數(shù)取出乘以10后再生成一個新的數(shù)組valnewArr=for(e<-arrife%2==0)yielde*10元組的定義Scala的元組是對多個不同類型對象的一種簡單封裝,它將不同的值用小括號括起來,并用逗號作分隔,即表示元組。定義元組格式
valtuple=(元素,元素...)元組的操作定義元組元組取值拉鏈操作定義元組valtuple=(“鐘南山",3.14,65535)valscores=Array(88,95,80)valnames=Array(“于敏”,“李延年”,“張富清")獲取元組中的第一個值:tuple._1 獲取元組中的第二個值:tuple._2拉鏈操作names.zip(scores)集合概述在Scala中,集合有三大類:
List、Set以及Map,所有的集合都擴展自Iterable特質(zhì)。Scala集合分為可變的(mutable)和不可變(immutable)的集合。其中,可變集合可以在適當(dāng)?shù)牡胤奖桓禄驍U展,意味著可以對集合進行修改、添加、移除元素;不可變集合類,相比之下,初始化后就永遠不會改變。集合特點ListArraySet無重復(fù)元素Map可迭代的鍵值對List的定義List列表和數(shù)組類似,列表的所有元素都具有相同類型。然而,列表與數(shù)組不同的是,列表默認(rèn)是不可變的。如果要定義可變列表,需要導(dǎo)入`importscala.collection.mutable.ListBuffer`包//字符串valfruit:List[String]=List("apples","oranges","pears")//整型valnums:List[Int]=List(1,2,3,4)//空valempty:List[Nothing]=List()//二維列表valdim:List[List[Int]]=List(List(1,0,0),List(0,1,0),List(0,0,1))List的定義可以使用“Nil”和“::”操作符來定義列表。//字符串valfruit="apples"::("oranges"::("pears"::Nil))//整型valnums=1::(2::(3::(4::Nil)))//空列表valempty=Nil//二維列表valdim=(1::(0::(0::Nil)))::(0::(1::(0::Nil)))::(0::(0::(1::Nil)))::NilList的常用操作列表List作為數(shù)據(jù)結(jié)構(gòu)之一,Scala也提供了很多操作List的方法。接下來,我們列舉一些操作List常見的方法,具體如下所示:List的常用操作object
ListTest{
def
main(args:Array[String]){
valfruit="apples"::("oranges"::("pears"::Nil))
valnums=Nil
println("Headoffruit:"
+fruit.head)
println("Tailoffruit:"+fruit.tail)
println("Checkiffruitisempty:"
+fruit.isEmpty)
println("Checkifnumsisempty:"
+nums.isEmpty)
println("Tailoffruit:"
+fruit.take(2))
println("Containsoffruit:"
+fruit.contains("apples"))
}
}Set的定義Set是沒有重復(fù)對象的集合,所有元素都是唯一的。默認(rèn)情況下,Scala使用不可變Set集合,若想使用可變的Set集合,則需要引入scala.collection.mutable.Set包。定義Set集合格式
valset:Set[Int]=Set(1,2,3,4,5)Set的常用操作接下來,我們列舉一些操作Set集合的常見方法,具體如下所示:Set的常用操作objectSetTest{
defmain(args:Array[String]){
valsite=Set(“于敏”,“申紀(jì)蘭”,“黃旭華")
valnums:Set[Int]=Set()
println("第一網(wǎng)站是:"
+site.head)
println(“Tail網(wǎng)站是:"
+site.tail)
println("查看集合site是否為空:"
+site.isEmpty)
println("查看nums是否為空:"
+nums.isEmpty)
println("查看site的前兩個網(wǎng)站:"
+site.take(2))
println("查看集合是否包含網(wǎng)站于敏:"+site.contains("于敏"))
}}Map的定義Map是一種可迭代的鍵值對(key/value)結(jié)構(gòu),并且鍵是唯一的,值不一定是唯一的,所有的值都是通過鍵來獲取的。Map中所有元素的鍵與值都存在一種對應(yīng)關(guān)系,這種關(guān)系即為映射。Map有兩種類型,可變集合與不可變集合,默認(rèn)是不可變Map。若需要使用可變的Map集合,則需要引入importscala.collection.mutable.Map類。定義Map集合格式varA:Map[Char,Int]=Map(鍵->值,鍵->值...)Map的常用操作接下來,我們列舉一些操作Map集合的常見方法,具體如下所示:objectMapTest{
defmain(args:Array[String]){
valcolors=Map("red"->"#FF0000",
"azure"->"#F0FFFF",
"peru"->"#CD853F")
valperuColors=if(colors.contains("peru"))colors("peru")else0
valazureColor=colors.getOrElse("azure",0)
println("獲取colors中鍵為red的值:"+colors("red"))
println("獲取colors中所有的鍵:"
+colors.keys)
println("獲取colors中所有的值:"
+colors.values)
println("檢測colors是否為空:"
+colors.isEmpty)
println("判斷colors是否包含鍵peru包含則返回對應(yīng)值,否則返回0:"+peruColors)
println("判斷colors是否包含鍵azure,包含則獲取對應(yīng)值,否則返回0:"+azureColor)
}}Map的常用操作88小結(jié)掌握數(shù)組的定義和操作掌握元組的定義和操作掌握集合的定義和操作通信數(shù)據(jù)分析與實戰(zhàn)Scala語言基礎(chǔ)第一章第4節(jié)90掌握Scala類的創(chuàng)建掌握Scala對象實例化掌握Scala繼承操作掌握Scala的伴生對象的使用掌握Scala的特質(zhì)的使用學(xué)習(xí)目標(biāo)TARGET類與對象Scala是一種面向?qū)ο蟮恼Z言,類都是對象的抽象,而對象都是類的具體實例;類不占用內(nèi)存,而對象占用存儲空間。由于面向?qū)ο蟮暮诵氖菍ο螅粝胍趹?yīng)用程序中使用對象,就必須得先創(chuàng)建一個類。類是用于描述一組對象的共同特征和行為。創(chuàng)建類的格式class類名[參數(shù)列表]類名對象名稱=new類名();創(chuàng)建對象的格式對象實例化并調(diào)用
我們創(chuàng)建一個Point類,并在類中定義兩個字段x和y以及一個沒有返回值的move()方法,使用Point類的實例對象來訪問類中的方法和字段
classPoint(xc:Int,yc:Int){
varx:Int=xc
vary:Int=yc
defmove(dx:Int,dy:Int){
x=x+dx
y=y+dy
println("x的坐標(biāo)點:"
+x);
println("y的坐標(biāo)點:"
+y);
}}對象實例化并調(diào)用objectClassTest{ defmain(args:Array[String]){ valpt=newPoint(10,20);
//移到一個新的位置
pt.move(10,10); }}Scala的繼承
Scala是單繼承,只允許繼承一個父類。Scala可以繼承父類中的所有屬性和方法。如果子類要重寫一個父類中的非抽象方法,則必須使用override關(guān)鍵字,否則會出現(xiàn)語法錯誤。如果子類要重寫父類中抽象方法時,則無需使用override關(guān)鍵字在Scala子類繼承父類的時候,有以下幾點需要注意Scala的繼承創(chuàng)建一個Point類和一個Location類,并且Location類繼承Point類,演示子類Location重寫父類Point中的字段,具體代碼如下:#創(chuàng)建Point類,實現(xiàn)move方法classPoint(valxc:Int,valyc:Int){
varx:Int=xc
vary:Int=yc
defmove(dx:Int,dy:Int){
x=x+dx
y=y+dy
println("x的坐標(biāo)點:"
+x);
println("y的坐標(biāo)點:"
+y);
}
}Scala的繼承#創(chuàng)建Location類并繼承PointclassLocation(valxc:Int,valyc:Int,valzc:Int)extendsPoint(xc,yc){ varz:Int=zc defmove(dx:Int,dy:Int,dz:Int){ x=x+dx y=y+dy z=z+dz println("x的坐標(biāo)點:"+x); println("y的坐標(biāo)點:"+y); println("z的坐標(biāo)點:"+z); }}Scala的繼承#實例化子類并調(diào)用move方法objectExtendsTest{ defmain(args:Array[String]){ valloc=newLocation(10,20,15); //移到一個新的位置
loc.move(10,10,5); }}單例和伴生對象在Scala中,沒有靜態(tài)方法或靜態(tài)字段,所以不能用類名直接訪問類中的方法和字段,而是創(chuàng)建類的實例對象去訪問類中的方法和字段。但是,Scala中提供了object這個關(guān)鍵字用來實現(xiàn)單例模式,使用關(guān)鍵字object創(chuàng)建的對象為單例對象。創(chuàng)建單例對象objectobjecName單例和伴生對象//單例對象objectSingletonObject{ defhello(){ println(“Hello屠呦呦!")}}objectSingleton{defmain(args:Array[String]){
SingletonObject.hello() }}單例和伴生對象在Scala中,一個源文件中有一個類和一個單例對象,若單例對象名與類名相同,則把這個單例對象稱作伴生對象(companionobject),這個類則被稱為是單例對象的伴生類(companionclass)。類和伴生對象之間可以相互訪問私有的方法和字段。單例和伴生對象classPerson{
valage=93privatevarname=“袁隆平"
defprintName():Unit={
//在Person類中可以訪問伴生對象Person的私有字段
println(Person.TITLE+name)}
//伴生對象objectPerson{
//伴生對象中的私有字段
privatevarTITLE=“雜交水稻之父"
//主方法
defmain(args:Array[String]):Unit={
valperson=newPerson()
//訪問私有的字段name
person.name=“于敏"
person.printName()
}}Scala的特質(zhì)在Scala中,Trait可以對定義字段和方法進行實現(xiàn),Trait可以被類和對象(Objects)使用關(guān)鍵字extends來繼承。創(chuàng)建特質(zhì)的格式
traittraitNameScala的特質(zhì)traitAnimal{
defspeak()
deflisten():Unit={
}
defrun():Unit={
println("I'mrunning")
}
classPeopleextendsAnimal{
overridedefspeak():Unit={
println("I'mspeakingEnglish")
}}
objectPeople{
defmain(args:Array[String]):Unit={
varpeople=newPeople()
people.speak()
people.listen()
people.run()
}
}下面,我們創(chuàng)建一個特質(zhì)Animal,演示類繼承特質(zhì)并訪問特質(zhì)中方法的操作。104小結(jié)掌握Scala類的創(chuàng)建掌握Scala對象實例化掌握Scala繼承操作掌握Scala
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七夕美食營銷策略
- 基礎(chǔ)設(shè)施采購分包合同(2篇)
- 揭秘科學(xué)實驗
- 2024版專業(yè)建筑工程協(xié)議模板解析
- 建筑工程安全措施費合同
- 2024年未經(jīng)登記房產(chǎn)轉(zhuǎn)讓協(xié)議樣式
- 2024版二手房銷售合同范本3篇
- 電子政務(wù)大數(shù)據(jù)平臺建設(shè)合同
- 2024年網(wǎng)絡(luò)安全防護服務(wù)合同服務(wù)內(nèi)容與責(zé)任劃分
- 2025年度純電動汽車充電樁租賃服務(wù)合同3篇
- 《工業(yè)用二氟草酸硼酸鋰》
- 學(xué)校辦公室副主任述職報告范文
- 江蘇省蘇州市2024-2025學(xué)年第一學(xué)期八年級英語期末模擬試卷(一)(含答案)
- 運動障礙護理查房
- Python數(shù)據(jù)分析與應(yīng)用 課件 第12章 Seaborn
- 初三歷史復(fù)習(xí)備考策略
- 山東省濟南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 廣東省云浮市(2024年-2025年小學(xué)五年級語文)人教版期末考試(上學(xué)期)試卷及答案
- 大唐電廠采購合同范例
- 國潮風(fēng)中國風(fēng)2025蛇年大吉蛇年模板
- 《信托知識培訓(xùn)》課件
評論
0/150
提交評論