Kotlin类、继承、接口实现

来源:互联网 发布:国家电网考试知乎 编辑:程序博客网 时间:2024/05/17 01:34
继续学习基础
package net.edaibu.kotlintest.ClassAndExtends/** * Created by ${GEQIPENG} on 2017/5/23. */class Person {    //  关键字  public private internal protected    //public private protected 同java中一致,被internal修饰的类在同一个包中可见    //构造方法    class Person constructor(firstName: String) {}    //二级构造方法//    class Person(val name:String){//        constructor(name: String,parent:net.edaibu.kotlintest.ClassAndExtends.Person):this(name) {//        }//    }    //声明空构造函数//    class  Person private constructor(){}}//创建类的实例  注意kotlin没有new关键字val person = Person()//继承关系open class Base(p: Int)//类Drived 继承类 Baseclass Drived(p: Int) : Base(p)//复写成员open class MyBase {    fun method2() {}    open fun method1() {}}//继承并复写方法method1 复写要加override,并且保证父类的方法是open的class MyDrived() : MyBase() {    override fun method1() {}}//复写规则//定义类TestAopen class TestA {    open fun A() {        println("A")    }    fun a() {        println("a")    }}//定义接口Binterface B {    fun B() {        println("B")    }    fun A() {        println("b")    }}//类C继承TestA,实现接口B,因为接口B和类TestA中都有方法A,所以需要复写方法Aclass C() : TestA(), B {    override fun A() {        super<B>.A()        super.B()    }}//抽象类abstractopen class TestX {    open fun MethodX() {}}//复写TestX中的open方法,注意:抽象方法没有方法体abstract class TestY() : TestX() {    override abstract fun MethodX()}//密封类   用sealed修饰,类似java枚举类,不同于枚举的是sealed修饰的类可以包含子类型sealed class SealedTestClass {    class IsNumber(val number: SealedTestClass) : SealedTestClass()    class IsSum(val num1: SealedTestClass, val num2: SealedTestClass) : SealedTestClass()    object NotNumber : SealedTestClass()}//使用when表达式,当when表达式覆盖了所有情形是不需要写elsefun sealedTest(sealed: SealedTestClass): Double = when (sealed) {    is SealedTestClass.IsNumber -> sealedTest(sealed.number)    is SealedTestClass.IsSum -> sealedTest(sealed.num1)+ sealedTest(sealed.num2)    is SealedTestClass.NotNumber -> Double.NaN   //not a number value of double}

原创粉丝点击