上一篇博客介绍了 Android-Kotlin-抽象类与多态的表现 ;, 而这一篇博客专门介绍下 接口与多态的表现

选择包名,然后右键:

选择Class类型,会有class:

 选择File类型,不会自动有class:

 选择interface,是创建接口:

目录结构:



定义手机充电接口标准规范 InterfacePhone:

package cn.kotlin.kotlin_oop06

/**
* 定义描述手机的Interface
*/
interface InterfacePhone { /**
* 定义此功能的标准,只要是符合typeC接口的充电器就能充电,否则就无法充电,接口标准必须是Type-C
* (接口关注的是功能)
*/
fun typeC() }

描述 红色的TypeC手机充电器,(符合手机充电接口标准规范 InterfacePhone)

package cn.kotlin.kotlin_oop06

/**
* 描述 红色的TypeC手机充电器
*/
class RedChargerPhoneTypeC : InterfacePhone{ /**
* 实现了InterfacePhone接口,就必须要用override重写父类接口的标准,因为这是父类规定的规则,必须是Type-C接口才能充电
*/
override fun typeC() {
println("红色充电器,正常的给手机充电了--> 充电中....")
} }

描述 蓝色的TypeC手机充电器,(符合手机充电接口标准规范 InterfacePhone)

package cn.kotlin.kotlin_oop06

/**
* 描述 蓝色的TypeC手机充电器
*/
class BlueChargerPhoneTypeC : InterfacePhone{ /**
* 实现了InterfacePhone接口,就必须要用override重写父类接口的标准,因为这是父类规定的规则,必须是Type-C接口才能充电
*/
override fun typeC() {
println("蓝色充电器,正常的给手机充电了--> 充电中....")
} }

描述 黑色的TypeC手机充电器,(符合手机充电接口标准规范 InterfacePhone)

package cn.kotlin.kotlin_oop06

/**
* 描述 白色的TypeC手机充电器
*/
class BlackChargerPhoneTypeC : InterfacePhone{ /**
* 实现了InterfacePhone接口,就必须要用override重写父类接口的标准,因为这是父类规定的规则,必须是Type-C接口才能充电
*/
override fun typeC() {
println("白色充电器,正常的给手机充电了--> 充电中....")
} }

main测试方法,多态的表现:

package cn.kotlin.kotlin_oop06

fun main(args: Array<String>) {
// 父类 personChildClass = new 子类()
var interfacePhone:InterfacePhone = RedChargerPhoneTypeC()
interfacePhone.typeC() // 父类 personChildClass = new 子类()
interfacePhone = BlackChargerPhoneTypeC()
interfacePhone.typeC() // 父类 personChildClass = new 子类()
interfacePhone = BlueChargerPhoneTypeC()
interfacePhone.typeC() // 父类 personChildClass = new N个子类()
// .......
}

执行结果:

 mian测试方法,多态的表现

package cn.kotlin.kotlin_oop06

fun main(args: Array<String>) {

    // listOf<InterfacePhone> 传递的是InterfacePhone父类接口,所以可以增加所有 InterfacePhone接口>子类

    var list = listOf<InterfacePhone>(RedChargerPhoneTypeC(), BlackChargerPhoneTypeC(), BlueChargerPhoneTypeC())

    for (l in list)
l.typeC()
}

执行结果:

Android-Kotlin-接口与多态的表现的更多相关文章

  1. 谁说接口不能有代码?—— Kotlin接口简介(KAD 26)

    作者:Antonio Leiva 时间:Jun 6, 2017 原文链接:https://antonioleiva.com/interfaces-kotlin/ 与Java相比,Kotlin接口允许你 ...

  2. C#中的接口实现多态

    我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态 1.首先我们先要来了解了解什么是接口,它存在的意识 01.接口就是为了约束方法的格式(参数和返回值类型)而存在的 02 ...

  3. C#面向对象(三)接口实现多态

    一.如何用接口实现多态? 1.定义一个接口. using System; using System.Collections.Generic; using System.Linq; using Syst ...

  4. (转)Android之接口回调机制

    开发中,接口回调是我们经常用到的. 接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行. 举个例子: A有一个问题不会,他去问B,B暂时解决不出来,B说,等我(B)解决了再告诉你(A)此时A ...

  5. No2_4.接口继承多态_Java学习笔记_经典案例

    import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collections; import jav ...

  6. ShiWangMeSDK Android版接口文档 0.2.0 版

    # ShiWangMeSDK Android版接口文档 0.2.0 版 android 总共有 14 个接口,分别涉及到初始化和对界面的一些细节的控制.下面详细介绍接口,如果没有特殊说明,接口都在 S ...

  7. Java基础学习笔记八 Java基础语法之接口和多态

    接口 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”.接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义 ...

  8. java接口,接口的特性,接口实现多态,面向接口编程

    package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...

  9. Kotlin 接口

    Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现: interface MyInterface { fun bar() // 未实现 fun fo ...

随机推荐

  1. Ubuntu安装bcmath扩展

    sudo apt-get install php-bcmath

  2. Laravel Session() 失效的问题

    之前因为自己自定义了后台的路由,然后路由定义的乱七八糟的. 突然发现session失效了,记录一下,避免后者遇坑. 路由组统一通过web中间件或者存在于一个中间件中 protected $middle ...

  3. Spring IOC(七)类型推断

    Spring IOC(七)类型推断 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 容器中可以根据 bean ...

  4. ApplicationContext(三)BeanFactory 初始化

    ApplicationContext(三)BeanFactory 初始化 上节我们提到容器初始化的第一步首先进行了属性的检验,下面就要开始第二步:进行 beanFactory 的初始化工作了. App ...

  5. android 使用UDP发送数据 DatagramSocket 创建对象为null

    DatagramSocket socket=null; try { socket = new DatagramSocket();  //这里创建对象为空 } catch (SocketExceptio ...

  6. java JNI 实现原理 (二) Linux 下如何 load JNILibrary

    在博客java JNI (一)虚拟机中classloader的JNILibrary 中讨论了java中的Library 是由classloader 来load的,那我们来看看 classloader是 ...

  7. css初识和css选择器

    一.css是什么 css(cascading style sheet)定义如何显示HTML元素,给HTML设置样式,显得更为美观. 二.css的引入方式 1.行内引入 在标签中添加一个style是属性 ...

  8. swift - 导航设置总结加深记忆

    一.创建导航     let VC=ViewController()    let navigationC = UINavigationController(rootViewController: V ...

  9. 2018.11.09 bzoj2165: 大楼(倍增+floyd)

    传送门 先倍增出iii使得2i2^i2i时间时刚好有每个点能够到mmm层及以上. 然后就可以用floyd+floyd+floyd+倍增求出刚好不超过mmm层的时间,最后再补一层就行了. 代码: #pr ...

  10. 执行sh脚本文件下载Github上的代码(雷霄骅的ffmpeg示例代码)

       今天想重新学习下ffmpeg,于是又来到了雷晓骅的博客,先下载了他的所有代码,这里记录一下在Windows上使用sh脚本下载GitHub上代码的过程. CygWin(最后并没有用到)    可以 ...