Scala學習八之類簡單學習瞭解

如同java中,如果要運行一個程序,必須編寫一個包含main方法類一樣;在scala中,如果要運 行一個應用程序,必須有一個main方法,作為入口;

scala中的main方法定義為def main(args: Array[String]),而且必須定義在object中。

Scala學習八之類簡單學習瞭解

如果要運行上述代碼,需要將其放入.scala文件,然後先使用scalac編譯,再用scala執行

Scala學習八之類簡單學習瞭解

面向對象:

Scala學習八之類簡單學習瞭解


Scala學習八之類簡單學習瞭解

object

對象,為了解決scala中class中不能存在static關鍵字的問題:直白講,object對象在jvm中只存在一份,object中所有屬性和方法都是靜態的,類似java中的static修飾

寫一個簡單的類

Scala學習八之類簡單學習瞭解

調用

Scala學習八之類簡單學習瞭解

在Java和Scala中,管理項目可以使用包結構,C和C#使用命名空間。

對於package

可以創建下面的形式

Scala學習八之類簡單學習瞭解

等同於下面的形式

Scala學習八之類簡單學習瞭解

還可以寫成下面的形式

Scala學習八之類簡單學習瞭解

在test和test.pkg和test.pkg.wzy包下面分別建類

Test包下面

Scala學習八之類簡單學習瞭解

test.pkg包下面

Scala學習八之類簡單學習瞭解

test.pkg.wzy下面

Scala學習八之類簡單學習瞭解

在test.pkg.wzy.pkgtest新建一個允許Object

Scala學習八之類簡單學習瞭解

這種形式裡test.pkg的成員在這裡不可見,pkgtest包在test.pkg.wzy中,只能對wzy包有訪問權限,不能訪問上一層,包是沒有繼承關係的,但是位於文件頂部不帶花括號的包聲明在整個文件範圍內有效

Scala學習八之類簡單學習瞭解


作用域:可以放到屬性、方法、class、object、trait上,定義的時候,放在對應的關鍵字之前即可

public:默認,不需要寫出來

protected:和Java一樣,但Scala不推薦使用

private:和java功能一模一樣,class是私有訪問,只能在當前的class中進行訪問

private[this/class名稱/包名稱] : 在private的基礎上做了一個限制,

this:表示只有當前對象可用

Scala學習八之類簡單學習瞭解

class的構造函數:主構造函數、輔助構造函數

主構造函數

1.默認有一個無參數的主構造函數

2.主構造函數位於class名稱後的一個定義(就是函數的參數輸入列表)+ 函數體內可執行的所有代碼

Scala學習八之類簡單學習瞭解

調用

Scala學習八之類簡單學習瞭解

主構造函數可以加參數,主構造函數中定義的輸入參數,最終是作為class的屬性存在,並且修飾符為public val;可以將其修改為其他修飾符

Scala學習八之類簡單學習瞭解

參數可以給定默認值

Scala學習八之類簡單學習瞭解

輔助構造函數(可以寫多個輔助構造函數)

1.以this為函數名稱的函數就叫做輔助構造函數

2.輔助構造函數不能有返回值

3.輔助構造函數的第一行必須調用主構造函數或者定義在他之前的輔助構造函數

注意:主構造函數和輔助構造函數的參數不能一樣

Scala學習八之類簡單學習瞭解

對象構建初始化的過程:基本和java一樣

var p : Person = new Person("小倩",20)

1) 加載類的信息(屬性信息,方法信息)

2) 在內存中(堆)開闢空間

3) 使用父類的構造器(主和輔助)進行初始

4) 使用主構造器對屬性進行初始化 [age:90, name null]

5) 使用輔助構造器對屬性進行初始化 [age:20, name小倩]

6) 將開闢的對象的地址賦給 p 這個引用


伴生對象和伴生類

定義:如果在一個Scala文件中,分別存在一個class和一個object,而且class和object的名稱完全一樣,那麼這個class為object的伴生類,object為class的伴生對象

Scala學習八之類簡單學習瞭解

作用:伴生類和伴生對象之間可以互相訪問私有屬性或者方法

Scala學習八之類簡單學習瞭解

運行下

Scala學習八之類簡單學習瞭解

apply方法

定義在object中表示提供一種快捷的對象創建方式,創建的對象就是apply方法返回的數據類型


Scala學習八之類簡單學習瞭解

創建對象的調用方式就是object名稱+apply函數的參數列表

Scala學習八之類簡單學習瞭解

返回對象

Scala學習八之類簡單學習瞭解

運行下

Scala學習八之類簡單學習瞭解

Class和Object都有一個apply看調用是調用Object

Scala學習八之類簡單學習瞭解

Scala學習八之類簡單學習瞭解

調用

Scala學習八之類簡單學習瞭解

定義在class中,表示提供一種快捷的數據獲取方式,類似list集合數據獲取方式 eg:list(0)

比如這個

Scala學習八之類簡單學習瞭解

獲取的方式

Scala學習八之類簡單學習瞭解

update方法

只能定義在class中,表示提供一種便捷的數據更新/插入的方法,類似數組的更新eg:arr(0) = 100 ,

update函數中參數至少兩個,參數列表的最後一個參數在調用的時候寫在等號後面,其他寫在等號前面

創建類

Scala學習八之類簡單學習瞭解

Scala學習八之類簡單學習瞭解

調用結果

Scala學習八之類簡單學習瞭解


分享到:


相關文章: