接口:
- 在java中實現(xiàn)接口時,接口里面的兩個方法都必須實現(xiàn),Kotlin接口如果改成這樣的話,只需要強制實現(xiàn) readBooks() 函數(shù)了,doHomework()可以選擇寫或者不寫,不寫的話則會打印do homework default implementation.。
interface Study {
fun readBooks()
fun doHomework() {
println("do homework default implementation.")
}
}
訪問修飾符:
在 Java 中一共由 public、private、protected、default(什么都不寫)這四種修飾符,在 Kotlin 中有 public、private、protected、internal 這四種修飾符,想要使用那種修飾符時直接將修飾符寫在 fun 前面即可。
private 修飾符在兩種語言中的作用一模一樣,都表示只對當前類內(nèi)部可見
public 修飾符的作用也是一致的,標識對所有類可見,但是在 Kotlin 中
public 修飾符是默認項,而在 Java 中是 default,前面書寫的函數(shù)都沒有加訪問修飾符,那么這些函數(shù)的訪問權限全部是 public。protected 在 Java 中表示對當前類,子類和同一個包路徑下的類可見,在 Kotlin 中則表示只對當前類和子類可見。
Kotlin 拋棄了 Java 中的 default 可見性(同一包路徑下的類可見)。引入了一種新的可見性概念,只對同一模塊中的類可見,使用的是 internal 修飾符。比如我們開發(fā)了一個模塊給別人使用,但是有一些函數(shù)只允許在模塊內(nèi)部調(diào)用,不想暴露給外部,就可以將函數(shù)聲明為 internal修飾的。
Java 和 Kotlin 可見性修飾符對照表

image.png
Kotlin 中的數(shù)據(jù)類:
- 在 Kotlin 中只需要這一行代碼即可,其中神奇的地方在于 class 前面的 data 關鍵字,有了這個關鍵字就表明我們想要聲明一個數(shù)據(jù)類,Kotlin 會根據(jù)主構(gòu)造函數(shù)中的參數(shù)幫你將 equals()、hashCode()、toString()方法自動生成,從而減少了開發(fā)的工作量。
data class Cellphone(val brand: String, val price: Double)
fun main() {
val cellphone1 = Cellphone("Samsung", 1299.99)
val cellphone2 = Cellphone("Samsung", 1299.99)
println(cellphone1)
println("cellphone1 equals cellphone2 " + (cellphone1 == cellphone2))
}
- 如果將 class 前面的 data 去掉,那么它們的返回值就會變?yōu)?false。
Kotlin 中的單例類:
- 在 Kotlin 中實現(xiàn)單例要比 Java 中簡單的多,只需要使用 object 關鍵字即可,在這其中 Kotlin 幫我們創(chuàng)建了一個 Singleton 類的實例,并且保證全局只存在一個 Singleton 實例。
object Singleton {
fun singletonTest() {
println("singletonTest is called.")
}
}