scala 類物件學習記錄

2022-09-09 22:03:31 字數 2742 閱讀 1410

接首篇

整理一下scala的類物件

scala的類,屬性

定義使用方式和j**a中沒什麼區別,主要要注意一下屬性val 和var的賦值問題

class persion2

scala的方法

定義形式

def functionname ([引數列表]):[return type]=
其中返回型別可以不寫,就會根據你函式體的最後一行的型別值來自動生成

如下;def sum(n1:

int, n2:

int)

:int

=還可以寫成這種形式,直接跟=號 ,也是預設最後一行的型別值來自動生成

def sum(n1: int, n2: int)=

scala類的許可權控制

scala中許可權修飾符主要為public(不寫)、protected和private,可以用來修飾類、方法和屬性,如果沒寫許可權修飾符,預設就是public,這個的許可權範圍跟j**a一樣,此外private修飾的,也只能在本類中使用,跟j**a類似。

本類子類

同包類其他類

預設不寫-public

true

true

true

true

protected

true

true

false

false

private

true

false

false

false

scala中的類預設是public ,所以不用像j**a中寫 public  class classname {}

另外scala中有更加細粒度的許可權控制  

使用protected[x]或private[x]來修飾成員,可以做到對許可權的精確控制,其中x可以是類、包和單例物件

具體可以看這篇部落格中的許可權控制這塊。

scala的建立物件

1)基本語法

val | var 物件名 [:型別] = new型別()

scala的主構造器,輔助構造器

定義形式

class類名(形參列表)

println("父類主構造器")

}class emp(nameparam: string, ageparam: int) extends person08(nameparam, ageparam)

println("子類的主構造器")

}object test

}new emp 帶著引數進入到子類的輔助構造器,但是這裡只是帶引數進到 def this (,,,,)這裡,不執行裡面的函式體,然後繼續往上找,直到父類的主構造器,都是只帶著引數,不執行函式體,也不給裡面的屬性引數賦值,找到源頭父類的主構造器,才開始,賦值屬性引數,執行非方法函式,依次往下。

這裡的執行順序是 父類主構造器-》父類的輔助構造器-》子類的主構造器-》子類的輔助構造器

scala語言是完全物件導向的語言,所以並沒有靜態的操作(即在scala中沒有靜態的概念)。但是為了能夠和j**a語言互動(因為j**a中有靜態概念),就產生了一種特殊的物件來模擬類物件,該物件為單例物件。若單例物件名與類名一致,則稱該單例物件這個類的伴生物件,這個類的所有「靜態」內容都可以放置在它的伴生物件中宣告。

單例物件 類似 於j**a中的 啟動類 放置  public static void main 啟動函式 ,單例物件上公升為伴生物件的途徑就是在類物件檔案中 同時宣告單例,且這個單例物件名字和這個類物件名字一致。

1)基本語法

object person

// (2) 伴生物件對應的類稱為伴生類,伴生物件的名稱應該和伴生類名一致

class person_danli

}可以去這篇部落格看詳細說法

型別檢查和轉換

1)說明

(1)obj.isinstanceof[t]:判斷obj是不是t型別。

(2)obj.asinstanceof[t]:將obj強轉成t型別。

(3)classof獲取物件的類名。

2)案例實操

package com.atguigu.chapter6

class person14 }}

列舉類和應用類

1)說明

​ 列舉類:需要繼承enumeration

2)案例實操

package com.atguigu.chapter6

object test_em

//列舉類

object colorem extends enumeration

1)說明

使用type關鍵字可以定義新的資料資料型別名稱,本質上就是型別的乙個別名,類似c++ 和c 語言中的typedef用法

2)案例實操

package com.atguigu.chapter6

object test_type

}

Scala學習筆記3 類和物件

類 class 和構造器 類的定義形式如下 class myclass a int,b int show 你可以通過以上方式引數化特質,但是你會發現這和 new 類名 引數列表 引數化乙個類例項還是有區別的,因為你看到了對於test變數的兩次println 第一次在特質主體中,第二次是由於呼叫了方法...

Scala學習記錄 1 初識Scala語言

在網上安裝好scala後,配置相應環境變數,並在cmd頁面輸入 scala 後,會顯示歡迎資訊,並進入scala repl介面 注意 命令返回值時,repl會把它賦給乙個新的常量變數,從而可以在以後的運算中引用這個值。這些 res 變數會順序編號,因此總會有乙個唯一的容器來儲存命令的結果。同樣的,可...

scala 學習筆記 物件

new array 100 呼叫構造器this 100 生成乙個含有100個null元素的array 3.物件的update方法 val scores new scala.collection mutable hashmap string,int scores bob 100 呼叫scores.up...