Kotlin Class

Kotlin Basic Class

class Invoice {
}

Empty

class Empty

Constructor

class ConstExample(str : String) {

    var str : String = str
    var goal : Int  = 0

    init {
        this.str = "Taroshi"
    }

    constructor(goal : Int, str: String) : this(str){
        this.goal = goal
    }
}

val jiro : ConstExample = ConstExample("Jiro")
val sabu : ConstExample = ConstExample(3, "Saburo")

fun makeSure() {
    jiro.str = "Jirobo"
    println(sabu.goal)
}

Inheritance

To allow to inherit class, we need to add open

open class Base(p: Int)

Derived

class Derived(p: Int) : Base(p)

abstract

Of course, Kotlin has abstract class

// Abstract
abstract class Abst {
    abstract fun f()
}

class BAbst : Abst() {
    override fun f() {

    }
}

Kotlin Basic Interface

Difference between Java and Kotlin interface is that Kotlin interface may have implementation.

interface B {
    fun f() { print("Bf") }   // Can write actual codes
    fun b() { print("Bb")}
}

Those two interface has actual code(implementation).

Override Rule

// Overriding Rules
open class A {
    open fun f() { print("Af")}
    fun a() {print("Aa")}
}

interface B {
    fun f() { print("Bf") }   // Can write actual codes
    fun b() { print("Bb")}
}

class C() : A(), B {
    override fun f() {
        super<A>.f()
        super<B>.f()
    }

    override fun b() {
        super.b()
    }
}

We can choose interface or class override using super<T>