Kotlin类的继承和重载方法

12人阅读 评论(0) 收藏 举报
分类:
Kotlin类的继承和重载方法

继承

Kotlin中的所有类都有一个通用的超类:Any,这是一个没有父类型的类的默认超类。

class Example // Implicitly inherits from Any
Kotlin

Any不是java.lang.Object; 特别地要说明的是,除了equals()hashCode()toString()之外,它不具有其它任何成员函数。有关更多详细信息,请参阅Java互操作性部分。

要声明一个显式的超类型,将冒号后面的类型放在类头中:

open class Base(p: Int)

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

如果类具有主构造函数,则可以使用主构造函数的参数(并且必须)初始化基类型。

如果类没有主构造函数,则每个辅助构造函数必须使用super关键字初始化基类型,或者委托给另一个构造函数。 请注意,在这种情况下,不同的辅助构造函数可以调用基类型的不同构造函数:

class MyView : View {
    constructor(ctx: Context) : super(ctx)

    constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs)
}
Kotlin

一个类的开放(open)注释与Java的最终结果相反:它允许其他人继承这个类。 默认情况下,Kotlin中的所有类都是final,它对应于有效Java用法,设计和继承的文档或者禁止它。

重载方法

正如前面提到的,与Java不同的是,Kotlin需要对可覆盖成员进行显式注释(称之为open)和覆盖:


open class Base {
    open fun v() {}
    fun nv() {}
}
class Derived() : Base() {
    override fun v() {}
}
Kotlin

Derived.v()需要覆盖(override)注释。 如果缺少(override)注释,编译器会抱错。 如果在一个函数上没有open注释,如在Base.nv()中,在子类中声明一个具有相同签名的方法是非法的,无论是否有覆盖(override)注释还是没有。 在final类(例如不使用open注释的类)中,则禁止覆盖成员。

标记为覆盖(override)的成员本身是打开的,即它可以在子类中被覆盖。 如果要禁止重新覆盖,请使用final关键字:

open class AnotherDerived() : Base() {
    final override fun v() {}
}

简单案例:

   father类:   

open class father {
    var chactor:String="外向"
    open fun action(){
        println("喜欢大声说话!!!")
    }
}

 son类:

class son:father() {   //子类继承父类的方式
   override fun action(){     //方法重载
        println("儿子很乖,说话少!!!!!!!!")
    }
}

 test文件: 

fun main(args: Array<String>) {
    var sons=son()   //对象的声明
    println("儿子的性格${sons.chactor}")   //儿子继承父类的变量
    sons.action()
} 

运行结果:

儿子的性格性格外向
儿子很乖,说话少!!!!!!!!

查看评论

Java类的继承----构造器,方法的重载

Java类的继承—–构造器,方法的重载 构造器 构造器又称为构造方法,是类为了初始化对象而创建的一个方法,没有返回值,名字和类名相同,如果一个类中没有声明构造器,会默认创建一个空的构造器,如果自己...
  • qq_28306343
  • qq_28306343
  • 2016-07-28 19:08:47
  • 178

Kotlin扩展函数与重载操作符解析

扩展函数可以称为Kotlin的核心,标准库里到处充斥着扩展函数和高阶函数。然而标准库中扩展函数看起来都是高深莫测,一脸懵逼。本文教你如何理解扩展函数。...
  • venusic
  • venusic
  • 2017-06-15 17:58:06
  • 1277

Kotlin方法重载和覆写

一、很多人分不清方法的重载和方法的覆写 覆写:override是重写父类已经存在的方法 重载:Overloads是写一个与已经存在的方法的方法名相同的方法,已经存在的这个方法可以是从父类继承的,也...
  • wd2014610
  • wd2014610
  • 2018-04-02 01:25:05
  • 19

Python面向对象编程(4)——类的继承与方法重载

类的继承与方法重载 1 继承的特点      减少代码并且灵活的定制新类,子类可以继承父类的属性和方法,但另一方面子类无法继承父类的私有属性和私有方法,子类可以修改父类的方法,也可以定义新的方法。...
  • LZTree
  • LZTree
  • 2017-03-05 22:10:12
  • 1276

kotlin的 类,继承,重载,抽象类,构造函数

kotlin--类和继承 主要内容 类声明构造函数声明实例化继承方法重载抽象类 一、类声明 使用class关键字声明类,查看其声明格式: : modifier...
  • u010361662
  • u010361662
  • 2017-01-04 17:57:59
  • 3647

Kotlin - 运算符重载

Kotlin支持标准的算术运算表达式, 其中运算符被声明为相应类的成员。Kotlin源代码中,我们可以自定义类型的运算符实现,即运算符的重载。这些运算符有固定的表示, 和固定的优先级。Kotlin为基...
  • IO_Field
  • IO_Field
  • 2016-10-14 17:10:52
  • 4691

Kotlin操作符重载(十)

Kotin操作符重载
  • learningITwell
  • learningITwell
  • 2017-06-08 20:16:29
  • 474

AIDL使用1 – 简单通信

AIDL使用1 – 简单通信终于又有活儿干了。 监控网速。可以提供给其他app。涉及到IPC,bound service不再适用。这里就用上了AIDL。 AIDL简介详见官方文档:http://d...
  • K0Kong
  • K0Kong
  • 2016-04-14 23:23:11
  • 382

Kotlin语法(六)-类和继承

类 1.     声明类          Kotlin使用关键字*class *{:.keyword}声明类。类声明包括类名、类头(指定其类型参数,主构造函数等)和这个类的主干。类头和主体都是可选的...
  • tangxl2008008
  • tangxl2008008
  • 2016-08-13 17:03:35
  • 5119

Kotlin开发Android笔记9:Kotlin操作符重载

Kotin有一些固定数量象征性的操作符,开发中可以在任何类中使用它们。使用方法是: 创建一个方法,方法名为保留的操作符关键字,如此就可以让这个操作符的行为映射到这个方法。重载这些操作符可以增加代码可读...
  • true100
  • true100
  • 2016-08-11 14:01:06
  • 1384
    个人资料
    等级:
    访问量: 9012
    积分: 461
    排名: 10万+
    文章分类
    最新评论