1. 程式人生 > 其它 >Scala學習2——idea配置scala環境,scala初步學習

Scala學習2——idea配置scala環境,scala初步學習

使用Java Decompiler反編譯位元組碼到.class原始檔可以看到引入Scala庫的邏輯。並且:

  • scala原始檔中的HelloScala物件編譯後成為了一個類,但物件本身編譯後就是生成的另一個類HelloScala$類的單例物件HelloScala$.MODULE$,稱之為伴生物件。
  • HelloScala$有一個main例項方法,HelloScala類的靜態方法通過這個單例物件轉調這個例項方法。完成列印。
  • 說明Scala比Java更面向物件。

使用idea編寫Scala專案

1.新建maven專案

2.安裝Scala外掛

3.右鍵單擊專案新增scala支援

4.可以建立scala類了

5.執行(idea有程式碼補全會舒服很多)

嘗試呼叫java類庫

System.out.println("hello scala from java")

scala刪除了static關鍵字更好的實現了面向物件,體現:

java中,static關鍵字的使用的一個舉例

public class Student{
    private static String school = "std";

     public void printInfo(){
        System.out.println(Student.school)
    }   
}
    

但是這並不完全的”面向物件“,因為static關鍵字的存在,呼叫時,使用的是School這個類而不是一個物件

而在scala中,使用伴生物件與伴生類的關係,解決了這個問題,使得Scala更加得“面向物件”

class Student(name:String,age:Int) {
  def printInfo() : Unit = {
    println(name + "" + age + "" + Student.school)

  }
}

//引入伴生物件
object Student{
  val school : String = "std"
}

class Student是object Student的伴生類;object Student是class Student伴生物件。彼此相伴相生,互相之間可以訪問彼此的私有成員

測試一下

class Student(name:String,age:Int) {
  def printInfo() : Unit = {
    println(name + " " + age + " " + Student.school)

  }
}

//引入伴生物件
object Student{
  val school : String = "std"

  def main(args: Array[String]): Unit = {
    val alice = new Student("alice",20)
    alice.printInfo()
  }
}