美文网首页
kotlin inheritance 继承

kotlin inheritance 继承

作者: 甲乙丙丁你我他 | 来源:发表于2017-05-24 12:43 被阅读0次

Any

所有类都继承该类,提供默认的三个函数:

equals()

hashCode()

toString()
继承声明:

在类的构造函数之后使用:标识继承

父类

子类

当类未声明构造函数时,继承其他类时,也不需要在primary constructor显示的声明构造函数,必须在secondary constructor中显示调用父类构造函数,若父类有多个构造函数,可以选择其一进行调用。

所有类定义时默认是final属性,不可被继承。若需要继承,使用open关键字进行修饰。

方法重载:

方法默认是final的,不可被子类重载,若需要被重载,使用关键词open进行修饰,子类重载方法使用override关键词;需要显式 标注可覆盖的成员(开放 open)和覆盖后的成员:

override修饰的方法,默认是可以被继承的。标记为override的成员本身是开放的,也就是说,它可以在子类中覆盖。若希望不被继承,可以使用final关键词修饰。

final override fun study(){}

方法重载规则:

当类同时继承类和实现接口,且有相同方法,且相同方法都有实现时,需要在重载方法中调用所继承的方法,使用关键词super<T>T表示所继承或实现的接口;

open class A {
    open fun f(){ 
         print("A")
    }
    fun a() {
        print("a")
     }
}

interface B {
     // 接口成员默认就是“open”的
     fun f() {
         print("B")
     }
     fun b() {
         print("b")
     }
}

class C(): A(), B {
     // 编译器要求覆盖 f():
     override fun f() {
          // 必须在C中覆盖f()并且提供我们自己的实现来消除歧义,此处这样调用是为了举例说明
          // 调用 A.f()
          super<A>.f()
          // 调用 B.f()
          super<B>.f()
     }
}

当接口未实现方法时,默认为父类的study方法,不需要调用所继承的方法;

抽象类:

允许有abstract修饰的成员方法,非抽象类不允许有抽象方法;

abstract class User {
    abstract fun study()
}

class Person: User {
    // 必须有一个secondary constructor,否则会报This type has a constructor,and thus
    // must be initialized here的编译错误
    constructor(){
    }

    override fun study() {
    }
}

抽象类默认是可被继承的,接口是特殊的抽象类,允许有抽象方法:

interface Reading{
     abstract fun reading()
}

相关文章

  • kotlin inheritance 继承

    Any 所有类都继承该类,提供默认的三个函数: equals()hashCode()toString()继承声明:...

  • Inheritance (继承)

    A class caninheritmethods, properties, and other characte...

  • 继承(Inheritance)

    值类型(枚举 结构体)不支持继承,只有类支持继承 没有父类的类,称为:基类 Swift没有像OC,Java那样的规...

  • 继承-Inheritance

    继承是面向对象编程的核心概念之一,它允许一个对象得到另一个对象的属性和方法,这使得削减代码和重用代码都变得简单。我...

  • 继承(Inheritance)

    当子类继承基类时,子类包含了父基类所有数据及操作的定义。 在 C++ 实践中,继承主要用于两种场合: 实现继承:子...

  • 虚函数

    虚函数 Inheritance (继承) with virtual functions (虚函数) 非虚函数:继承...

  • Swift - 继承(Inheritance)

    继承(Inheritance) 值类型(枚举、结构体)不支持继承,只有 类 支持继承 基类:没有父类的类Swift...

  • 13 Inheritance 继承

    一个类可以从另一个类继承方法、属性和其他特征。当一个类从另一个类继承时,继承类称为子类,它继承的类称为超类。继承是...

  • C++中类的组合(BOOLAN教育)

    Inheritance(继承),Composition(复合),Delegation(委托) Compositio...

  • Object-orientation

    Three most important concepts inheritance继承encapsulation封...

网友评论

      本文标题:kotlin inheritance 继承

      本文链接:https://www.haomeiwen.com/subject/lnfvxxtx.html