Kotlin抽象類


使用abstract關鍵字宣告的類稱為抽象類。 無法範例化抽象類。 意思是,不能建立抽象類的物件。 顯式使用abstract關鍵宣告類,才能表示抽象類的方法和屬性,否則它是非抽象的。

抽象類宣告

abstract class A {  
    var x = 0  
    abstract fun doSomething()  
}

抽象類是部分定義的類,方法和屬性,它們不是實現,但必須在派生類中實現。 如果派生類沒有實現基礎類別的屬性或方法,那麼它也是一個抽象類。

抽象類或抽象函式不需要使用open關鍵字進行批註,因為它們預設是開放的。 抽象成員函式不包含實現主體。 如果成員函式在抽象類中包含有函式的實現,則不能將宣告為abstract

具有抽象方法的抽象類的範例

在這個例子中,有一個抽象類Car包含一個抽象函式run()run()函式的實現由它的子類Honda提供。

abstract class Car{
    abstract fun run()
}
class Honda: Car(){
    override fun run(){
        println("Honda is running safely..")
    }
}
fun main(args: Array<String>){
    val obj = Honda()
    obj.run();
}

執行上面範例程式碼,得到以下結果 -

Honda is running safely..

非抽象的open成員函式可以在抽象類中過載。

open class Car {
    open fun run() {
        println("Car is running..")
    }
}
abstract class Honda : Car() {
    override abstract fun run()
}
class City: Honda(){
    override fun run() {
        //  TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        println("Honda City is running..")
    }
}
fun main(args: Array<String>){
    val car = Car()
    car.run()
    val city = City()
    city.run()
}

執行上面範例程式碼,得到以下結果 -

Car is running..
Honda City is running..

在上面的例子中,一個抽象類Honda擴充套件了Car類和它的run()函式。 Honda類覆蓋Car類的run()函式。 Honda類沒有給出run()函式的實現,因為將它也宣告為abstractHonda類的抽象函式run()的實現由City類提供。

抽象類範例

在此範例中,包含抽象函式simpleInterest()的抽象類:Bank,它接受三個引數prtSBI類和PNB類提供simpleInterest()函式的實現並返回結果。

abstract class Bank {
    abstract fun simpleInterest(p: Int, r: Double, t: Int) :Double
}

class SBI : Bank() {
    override fun simpleInterest(p: Int, r: Double, t: Int): Double{
        return (p*r*t)/100
    }
}
class PNB : Bank() {
    override fun simpleInterest(p: Int, r: Double, t: Int): Double{
        return (p*r*t)/100
    }
}
fun main(args: Array<String>) {
    var sbi: Bank = SBI()
    val sbiint = sbi.simpleInterest(1000,5.0,3)
    println("SBI interest is $sbiint")
    var pnb: Bank = PNB()
    val pnbint = pnb.simpleInterest(1000,4.5,3)
    println("PNB interest is $pnbint")
}

執行上面範例程式碼,得到以下結果 -

SBI interest is 150.0
PNB interest is 135.0