Kotlin类、继承、接口实现

继续学习基础
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 继承类 Base
class Drived(p: Int) : Base(p)

//复写成员
open class MyBase {
    fun method2() {}
    open fun method1() {}
}

//继承并复写方法method1 复写要加override,并且保证父类的方法是open的
class MyDrived() : MyBase() {
    override fun method1() {}
}

//复写规则
//定义类TestA
open class TestA {
    open fun A() {
        println("A")
    }

    fun a() {
        println("a")
    }
}

//定义接口B
interface B {
    fun B() {
        println("B")
    }

    fun A() {
        println("b")
    }
}

//类C继承TestA,实现接口B,因为接口B和类TestA中都有方法A,所以需要复写方法A
class C() : TestA(), B {
    override fun A() {
        super<B>.A()
        super.B()
    }

}


//抽象类abstract

open 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表达式覆盖了所有情形是不需要写else

fun 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

}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值