kotlin基礎二類簡介

Kotlin基礎<二>


類和屬性

  就從JavaBean開始講起吧。讓我們看看在Java當中,JavaBean Person class是如何書寫代碼的:

public class Person {

    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

  在Java中,構造器裏面通常是給其字段賦值,然後有一個getter或者setter方法亦或者二者都有。而在Kotlin中:

class Person(val name: String)

只需要這麼一句就可以了。是不是很簡潔呢?你也許會奇怪修飾符public怎麼不見了,沒錯,這也是Kotlin的特性之一,在Kotlin中,默認的訪問權限就是public,因此,在這裏並不需要顯式指定public
  Kotlin幫你搞定了很多事情,比如生成一個getter或者還有一個setter。爲什麼這麼說呢?我們來看一段Kotlin代碼:

class Person(val name: String, var isMan: Boolean)  

  屬性name是用val聲明的,kotlin編譯器會自動爲其生成一個getter方法,而屬性isMan是用var聲明的,所以會同時生成getter和setter方法。
  他們的用法在kotlin和Java中也是不太一樣的:

public class Person {

    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public static void main(String...args) {
        Person person = new Person("crazypandas");
        System.out.println(person.getName());
    }
}
//result:
//crazypandas

而在kotlin中是這樣的:

class Person(val name: String)

fun main(vararg args: String) {
    val person = Person("crazypandas")//<1>
    println(person.name)              //<2>
}
//result:
//crazypandas
  • <1>你調用了構造器,而且沒有使用new關鍵字
  • <2>你調用了getter方法並且訪問到了它的值
    是不是覺得很神奇?同樣的邏輯代碼,卻簡潔了不少,終於不用整天成噸成噸的寫代碼了。同樣的,如果屬性是var的話,你可以直接賦值(實質上kotlin編譯器會自動幫你調用setter),例如你有一個person對象,對象有個屬性是isMan:person.isMan = true
    那麼在kotlin中能否自定義getter和setter呢?當然可以!請看下面代碼:
class Rectangle(val width: Int, val height: Int) {
    val isSquare: Boolean
        get() { //<1>
            return width == height
        }
}

fun main(vararg args: String) {
    val rectangle = Rectangle(10, 10)
    println(rectangle.isSquare)
}
//result
//true

<1>:屬性isSquare的getter聲明
你甚至還可以這麼幹:

class Rectangle(val width: Int, val height: Int) {
    val isSquare: Boolean
        get() = width == height
}

這也是可以的。

package聲明和import包

在kotlin中,package聲明和import包和Java沒有任何區別(package其實還是有一點區別的,下面會提到),因爲Kotlin和Java百分百兼容,因此,你可以在kotlin中import Java的類庫來使用。

Java和Kotlin的代碼文件

  衆所周知,在Java中,類名必須和.Java文件相同,而在Kotlin中沒有這個限制。在kotlin中,同一個文件可以寫很多個類,並且名字可以是任意的。
  在kotlin中,package其實並不完全等價於Java,在Java中,package和文件夾路徑一致,在kotlin中,package 不等價於文件夾路徑,這點是需要注意的。

發佈了68 篇原創文章 · 獲贊 30 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章