文章目录

  • I . 子类调用父类总结
  • II . 子类调用父类方法 ( super )
  • III . 子类内部类调用父类方法 ( super@ )
  • IV . 子类选择调用不同的 父类 / 接口方法 ( super<> )

I . 子类调用父类总结


1 . 继承 / 实现 : 子类继承了父类 , 或实现了接口 , 接收了父类的所有操作与属性 ,

2 . 子类调用父类 : 子类可以任意调用父类的 public , protected 可见性的属性与方法 ;

3 . 子类重写父类方法 : 如果属性 或 方法被子类重写了 , 那么就需要使用 super 关键字调用父类属性或方法 ;

4 . super 关键字调用需要考虑的情况 :

① 常用情况 : 最常用的情况只使用 super 关键字进行简单调用即可 ;

② 子类内部类调用父类 : 如果想要在子类的内部调用父类的成员和方法 , 需要使用 super@子类名称 调用 ;

③ 子类调用不同父类的同名方法 : 如果子类继承的父类 / 实现的接口有相同名称的属性 / 方法 , 就需要使用 super<类/接口 名称> 的形式调用指定 父类 / 接口的方法 ;

II . 子类调用父类方法 ( super )


子类调用父类方法 : 子类中可以通过 super 调用父类的方法 , 包括普通方法 , 和属性访问的 setter 方法 ; 其中的 super 相当于父类对象的引用 ;

open class Father{open fun action(){ println("Father")}
}class Son : Father() {override fun action() {//使用 super 关键字调用父类的方法super.action()println("Son")}
}

III . 子类内部类调用父类方法 ( super@ )


子类内部类调用父类方法 : 在子类的内部类中 , 如果想要访问父类的方法 , 可以使用 super@子类名称.父类方法() 的形式 , 调用父类的方法 ;

注意 : 这里的 super@ 后面是子类的名称 ;

open class Father{fun action(){ println("Father")}
}class Son : Father() {inner class House{fun build(){//使用 super@子类名称 调用父类的方法super@Son.action()}}
}

IV . 子类选择调用不同的 父类 / 接口方法 ( super<> )


1 . 子类选择性调用父类 / 接口方法 : 子类可以继承父类 , 实现多个接口 , 如果父类与接口 , 或者不同的接口之间定义了相同名称的方法 , 那么需要使用 super<类名 / 接口名>.方法名() 选择调用指定的 类 / 接口 的指定方法 ;

2 . 代码示例 : 代码中定义了一个父类 Father , 接口 Build , 父类和接口 都定义了 action 方法 , 子类 Son 继承父类 , 实现 Build 接口 , 子类通过 super 调用父类中的成员或方法 , 子类通过 super 调用接口中的方法 ;

open class Father{open fun action(){ println("Father")}
}interface Build{fun action(){ println("Build")}
}class Son : Father() , Build {override fun action(){//调用父类的 action 方法super<Father>.action()//调用接口的 action 方法super<Build>.action()}
}fun main() {/*执行结果 :FatherBuild*/Son().action()
}

3 . 执行结果 :

Father
Build

【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )相关推荐

  1. c++继承父类的子类,如何调用父类的同名函数?

    https://blog.csdn.net/qq_26399665/article/details/52080215 子类调用父类的同名函数: 子类和父类返回值参数相同,函数名相同,有virtual关 ...

  2. ES6 (二十二)Class 的继承、extends关键字、super 关键字(函数调用(constructor)、对象(父类原型对象))、原型对象(原型链)、Mixin 模式

    ES6 (二十二)Class 的继承.extends关键字.super 关键字(函数调用(constructor).对象(父类原型对象)).原型对象(原型链).Mixin 模式 文章目录 ES6 (二 ...

  3. 继承实现的原理、子类中调用父类的方法、封装

    一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...

  4. Day19:继承实现的原理、子类中调用父类的方法、封装

    一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...

  5. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  6. 在子类中调用父类的方法super

    1.没有super之前,在子类里面需要父类里面的逻辑,但是我们是通过派生(自己定义了一个init,增加了一条line) class vehichle:#定义一个交通工具的类Country=" ...

  7. java中子类怎样调用父类的属性_java的继承、重载(overload)、覆盖(override)的总结...

    java为了解决相似属性和行为能共用相同的代码,也是为了便于标准模块化.减少相同代码要多次重复编写的问题,提供了继承.重载和覆盖的功能.继承是针对类,重载和覆盖是针对方法的. 一.继承:为了便于理解. ...

  8. 子类继承父类,父类实现接口,子类中调用父类和接口的同名成员变量会出现歧义

    子类是C,父类是A,A实现了接口P 当父类A和接口P都定义了一个同名的属性b,那么在子类C调用这个属性是调用的谁的呢? 连着写 interface P{int b = 10; } class A{in ...

  9. android继承父类的界面,Android调用父类方法,进行子界面刷新

    偶然遇到一个需求.有几个主界面需要获取消息的未读数量 由于不是所有类都调用.调用的次数又比较多,整的不上不下的 1.对于方法调用次数比较少的 推荐广播 广播的方法很方便.但是一堆的消息接收.发送很模式 ...

最新文章

  1. discuz x3插件开发傻瓜图文教程,用demo说话
  2. Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展
  3. CentOS 初体验十七:Nexus发布仓库和引用
  4. 遮掩java_Java×××:重载、重写、隐藏、遮蔽、遮掩(2)
  5. CF1406E:Deleting Numbers(构造、根号分块)
  6. linux安装mysql phpmyadmin_ubuntu mysql远程连接+phpmyadmin安装
  7. 怎么实现java和数据库的链接_JAVA简单链接Oracle数据库,实现注册和登陆的功能
  8. Laravel核心解读--ENV的加载和读取
  9. c语言程序不能运行,C语言编程,我写了一个程序,但不能运行.
  10. 安装好panel部署MySQL_实战三种方式部署 MySQL5.7
  11. OSChina 周日乱弹 ——不穿泳衣,我都不好意思上厕所
  12. 2021-08-01
  13. 基于BERT的ASR纠错
  14. 已知两点坐标和半径,求圆心
  15. python源码打包成exe、exe反编译、pyd加密防止反编译
  16. python写梦幻西游手游脚本_AirtestIDE实践一:梦幻西游手游师门任务自动化
  17. Azure vNet
  18. 超分辨率复原matlab,matlab超分辨率重构
  19. c语言 英文单词频率统计 哈希存储
  20. 我觉得,我认为。。。

热门文章

  1. 16:9或4:3,哪种屏幕宽高比更适合用户?
  2. 访问修饰符的个人理解-private与protected
  3. 翻译:Single Sign-On for Everyone
  4. Flask-Migrate拓展数据库表结构
  5. python——模块1、模块的分类
  6. Git详解之五 分布式Git
  7. jquery对象和Dom对象的不同
  8. WCF中Service Configuration Editor的使用方法(转)
  9. java集合框架(Framework)的性能
  10. 各类JDBC数据库连接方式