Kotlin程式設計之伴生物件,抽象類,密封類
阿新 • • 發佈:2019-01-06
Kotlin程式設計相關知識點介紹:
本篇概括:
- 伴生物件
- 抽象類
- 密封類
伴生物件
package com.xingen.kotlin.day2017531
fun main(args: Array<String>) {
Test.instance.test()
Test.test1()
}
class Test {
fun test() {
println("伴生物件的靜態呼叫物件,通過物件再呼叫方法")
}
companion object Factory{ // 伴生物件
var instance =Test()
fun test1(){
println("伴生物件的靜態呼叫方法")
}
}
}
輸出結果:
伴生物件的靜態呼叫物件,通過物件再呼叫方法
伴生物件的靜態呼叫方法
可知:
- 伴生物件可以實現靜態呼叫,通過
類名.屬性名
或者類名.方法名
進行呼叫。
抽象類
package com.xingen.kotlin.day2017531
fun main(args: Array<String>) {
Test.instance.test()
Test.instance.test1()
}
/**
* 定義一個抽象類
*
* 1. 抽象類中有抽象方法,方法的實現。
* 2. 抽象類和抽象方法是預設open關鍵字修飾的
*/
abstract class TestAbstract{
var v="抽象類中屬性"
abstract fun test()
fun test1(){
println("抽象類中方法的實現")
}
}
class Test :TestAbstract(){
override fun test() {
println("一個抽象類的子類中使用 $v")
}
companion object Factory{//伴生物件
var instance :TestAbstract=Test()
}
}
輸出結果:
一個抽象類的子類中使用 抽象類中屬性
抽象類中方法的實現
可知:
- 抽象類和抽象方法是預設open關鍵字修飾的
- 抽象類有抽象方法和方法的實現,可以有成員屬性
密封類
通常與When語句一起使用,確保宣告到所有的情形,不需要使用else語句。
在一個原始檔(.kt),編寫以下程式碼:
package com.xingen.kotlin
/**
* Created by ${新根} on 2017/5/24 0024.
* 部落格:http://blog.csdn.net/hexingen
*/
fun main(str: Array<String>) {
test( BaseClass.Test1() )
test( BaseClass.Test2() )
test( BaseClass.Test3 )
}
/**
* 使用when表示式
*/
fun test(instance: BaseClass)=when(instance){
is BaseClass.Test1-> instance.test()
is BaseClass.Test2-> instance.test()
is BaseClass.Test3->instance.test()
}
/**
*
* sealed修飾符修飾密封類。
*
* 密封類內部含有多個子類。
*/
sealed class BaseClass {
class Test1 : BaseClass() {
override fun test() {
println("Test1例項")
}
}
class Test2 : BaseClass() {
override fun test() {
println("Test2例項")
}
}
object Test3 : BaseClass() {
override fun test() {
println("Test3例項")
}
}
open fun test() {
println("BaseClass例項")
}
}
輸出如下:
Test1例項
Test2例項
Test3例項