上一篇博客介绍了 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. hdu2870 Largest Submatrix 单调栈

    描述 就不需要描述了... 题目传送门 题解 被lyd的书的标签给骗了(居然写了单调队列优化dp??)  看了半天没看出来哪里是单调队列dp,表示强烈谴责QAQ w x y z  可以各自 变成a , ...

  2. Spring Environment(二)源码分析

    Spring Environment(二)源码分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Envi ...

  3. 原创:Spring整合junit测试框架(简易教程 基于myeclipse,不需要麻烦的导包)

    我用的是myeclipse 10,之前一直想要用junit来测试含有spring注解或动态注入的类方法,可是由于在网上找的相关的jar文件进行测试,老是报这样那样的错误,今天无意中发现myeclips ...

  4. 状态机学习(三)解析JSON1

    来自 从零开始的 JSON 库教程 从零开始教授如何写一个符合标准的 C 语言 JSON 库 作者 Milo Yip https://zhuanlan.zhihu.com/json-tutorial ...

  5. 2019.01.21 洛谷P3919 【模板】可持久化数组(主席树)

    传送门 题意简述:支持在某个历史版本上修改某一个位置上的值,访问某个历史版本上的某一位置的值. 思路: 用主席树直接维护历史版本即可. 代码: #include<bits/stdc++.h> ...

  6. 2018.12.08 codeforces 939E. Maximize!(二分答案)

    传送门 二分答案好题. 题意简述:要求支持动态在一个数列队尾加入一个新的数(保证数列单增),查询所有子数列的 最大值减平均值 的最大值. 然而网上一堆高人是用三分做的. 我们先考虑当前的答案有可能由什 ...

  7. jQuery动态控制下拉列表的被选项[转]

    <form id="form" action="/query!query.action"> <select> <option va ...

  8. (11)Are you a giver or a taker?

    https://www.ted.com/talks/adam_grant_are_you_a_giver_or_a_taker/transcript 00:00I want you to look a ...

  9. 【MVC】bootstrap-paginator 分页

    [MVC]bootstrap-paginator 分页http://www.cnblogs.com/stoneniqiu/p/4000041.htmlhttp://www.cnblogs.com/Le ...

  10. 研究生flag

    是时候定个计划了,感觉日子一天天水,不加油学点东西,迟早要掉队…… 刷刷算法题库吧,貌似选几个管用的刷刷——https://hihocoder.com/problemset 争取明年三月份的PAT顶级 ...