返回顶部
首页 > 资讯 > 精选 >Kotlin继承实例分析
  • 737
分享到

Kotlin继承实例分析

2023-06-17 03:06:50 737人浏览 八月长安
摘要

本篇内容介绍了“Kotlin继承实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Kotlin中所有的类都有一个公有的超类:Any,这是

本篇内容介绍了“Kotlin继承实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Kotlin继承实例分析

Kotlin中所有的类都有一个公有的超类:Any,这是所有没有声明超类的类的默认父类。

class Example //隐式继承自Any

Any!=Java.lang.Object。尤其,除了equals()、hashCode()和toString()三个方法外,没有任何成员。

为了显式地声明超类,语法如下:

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

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

如果类没有主构造器,那么每个辅助构造器初始化时需要使用super关键字,或者将其委托给其他构造器。需要注意的是,在这种情况下,不同的辅助构造器可以调用基类的不同构造器。

class MyView:View{  constructor(ctx:Context):super(ctx)  constructor(ctx:Context,attrs:AttributeSet):super(ctx,attrs)  }

open注解和Java的final相反:它允许其他类继承自该类。默认的,Kotlin中所有的类是final的,也就是说不能继承的。

覆写方法

Kotlin总是做一些明确的事情,不像Java,Kotlin要求复写方法时需要显式的注解和重写:

open class Base {     open fun v() {         println("Base.v()")     }      fun nv() {         println("Base.nv")     }  }  class Derived() : Base() {      override fun v() {         println("Derived.v()")     }  }

复写Derived的v()时,ovverride注解是必须的,否则编译器会报错。如果没有open注解,比如Base的nv(),那么在子类中是不能覆写该方法的。在一个final类中(没有open注解声明),open成员是禁止的。也就是说final类的每个成员也都是final的。

一个标记为override的成员自身就是open的,子类仍然可以覆写它。如果你想禁止覆写,那么使用final

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

***,main()验证多态性:

fun main(args: Array<String>) {      var base1: Base = Base()     var base2: Base = Derived()     var base3: Base = AnotherDerived()      base1.v()     base2.v()     base3.v()  }

覆写属性

覆写属性和覆写方法基本类似;如果子类要重新声明父类中已经声明过的属性,那么需要使用override,并且类型要兼容。每个声明的属性可以被具有初始化器的属性或具有getter方法的属性覆盖。

open class Foo {     open val x: Int         get() {             println("Foo")             return 3         } }  class Bar1 : Foo() {     override val x: Int = 2 }

可以使用var属性覆盖val属性,反之不可以。因为val属性基本上声明一个getter方法,并将其替换为var,另外在派生类中声明一个setter方法。

可以在主构造器使用override覆盖属性

interface Aoo {     val count: Int }  class Aoo1(override val count: Int) : Aoo  class Aoo2 : Aoo {     override var count: Int = 0 }

覆写准则

在Kotlin中,实现继承由以下规则控制:如果类从其直接超类继承同一成员的多个实现,则它必须覆盖该成员并提供自己的实现(可能使用其中一个继承)。  要表示从其继承的实现的超类型,可在尖括号中使用超类型名称超级限定,例如,super。

open class A {     open fun f() {         println("A")     }      fun a() {         println("a")     }  }  //接口的方法默认open interface B {     fun f() {         println("B")     }      fun b() {         println("b")     }  }  class C() : A(), B {     override fun f() {         super<A>.f()         super<B>.f()         println("C")     } }

上面的代码继承自A和B是没有问题的,a()和b()因为C知道继承自哪一个类。但是对于f(),我们有两个继承,所以我们需要覆写f(),并且需要提供我们的实现来消除歧义。

“Kotlin继承实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Kotlin继承实例分析

本文链接: https://lsjlt.com/news/287016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Kotlin继承实例分析
    本篇内容介绍了“Kotlin继承实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Kotlin中所有的类都有一个公有的超类:Any,这是...
    99+
    2023-06-17
  • Java的继承实例分析
    这篇文章主要介绍“Java的继承实例分析”,在日常操作中,相信很多人在Java的继承实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的继承实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-29
  • CSS继承问题实例分析
    本篇内容介绍了“CSS继承问题实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 根据 CSS目前的...
    99+
    2024-04-02
  • Java继承使用实例分析
    本篇内容介绍了“Java继承使用实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!继承继承就是子类继承父类的特征和行为,使得子类对象(实...
    99+
    2023-06-29
  • Java继承应用实例分析
    这篇文章主要介绍“Java继承应用实例分析”,在日常操作中,相信很多人在Java继承应用实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java继承应用实例分析”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-30
  • python类的继承链实例分析
    1、子类可以继承父类,同样,父类也可以继承自己的父类,一层一层地继承。 class A: def have(self): print('I hava an apple') c...
    99+
    2024-04-02
  • JavaScript原型与继承实例分析
    今天小编给大家分享一下JavaScript原型与继承实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先我们需要知道的...
    99+
    2023-06-27
  • javascript中实现继承的示例分析
    小编给大家分享一下javascript中实现继承的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!类式继承//声明父类//声明父类function SuperClass() { &nbs...
    99+
    2023-06-27
  • Maven的继承与聚合实例分析
    这篇文章主要介绍“Maven的继承与聚合实例分析”,在日常操作中,相信很多人在Maven的继承与聚合实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Maven的继承与聚合实例分析”的疑惑有所帮助!接下来...
    99+
    2023-07-02
  • javascript中继承的示例分析
    这篇文章主要介绍javascript中继承的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!javascript 中的继承实例详解阅读目录原型链继承借用构造函数组合继承寄生组合...
    99+
    2024-04-02
  • CSS中继承的示例分析
    小编给大家分享一下CSS中继承的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明解释   -  ...
    99+
    2024-04-02
  • js中继承的示例分析
    这篇文章给大家分享的是有关js中继承的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。继承的简介继承”是JavaScript面向对象设计的重要一环,愿你认真读完本文,吃透继...
    99+
    2024-04-02
  • CSS的继承性及应用实例分析
    本篇内容介绍了“CSS的继承性及应用实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   CSS是...
    99+
    2024-04-02
  • 深入浅析kotlin中的继承与类
    深入浅析kotlin中的继承与类?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。kotlin基础教程之类和继承类声明使用class关键字声明类,查看其声明格式:: modifie...
    99+
    2023-05-31
    kotlin 继承
  • Angular.JS中Scope继承的示例分析
    这篇文章主要介绍Angular.JS中Scope继承的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基本原理在JavaScript中,每创建一个构造函数(constructo...
    99+
    2024-04-02
  • JavaScript原型继承的示例分析
    这篇文章主要介绍JavaScript原型继承的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在传统的基于Class的语言如Java、C++中,继承的本质是扩展一个已有的Cla...
    99+
    2024-04-02
  • C++继承方式的示例分析
    这篇文章给大家介绍C++继承方式的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C++支持多种程序设计风格,其中就包括对面向对象设计的支持。我们今天在这里将会为大家详细介绍一下各种C++继承方式的具体应用方法,...
    99+
    2023-06-17
  • JavaScript组合继承的示例分析
    这篇文章主要为大家展示了“JavaScript组合继承的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript组合继承的示例分析”这篇文章吧。原型链继承父类实例作为子类的原型...
    99+
    2023-06-25
  • java线程池中类的继承实例分析
    这篇文章主要介绍java线程池中类的继承实例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现了Web MVC设计模...
    99+
    2023-06-14
  • 一文读懂C++中的继承之菱形继承(案例分析)
    目录前言一、什么是多继承?1.单继承2.多继承二、菱形继承1.虚基类的引入2.虚基表的引入总结前言 我们上一篇说了世间万物都有一个继承体制,或多或少子类继承了父类的某些特征,但大多都...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作