kotlin面向对象之接口、代理与委托、单例模式
接口:
对于什么是接口这里就不概述了,跟java中的概念一样,下面直接上代码进行操练:
而男人跟女人的接口当然也是不同的,很显然男人跟女人最大的差别就是拥有"小弟弟"【我黄我暴利】,所以可以在男人的接口中定义一个这样的接口,如下:
接下来则定义一个具体的男人,来实现这个接口:
而作为具体类当然得实现抽象的接口,所以此时标红了,所以接下来实现下:
然后里面打印一句话:
接下来应用一下:
貌似这个接口跟上一次学的抽象类木有啥大的区别,不信,咱们用抽象类来改造一下程序:
这时调用代码完全不用动其结果跟使用接口的方式是一模一样的。从这个例子表现上看貌似确实是没区别,但是肯定是有区别的啦,要不然怎么会推出来不同的概念呢,下面来用文字对其描述一下其区别:“接口是事物的能力,而抽象类是事物的本质”,那如何说明这个问题呢?当然用代码啦,在磊码之前先将IMan还是还原成接口,如下:
先来新建一个人类,它是抽象的,描述了事件的本质:
然后对于男人来需要继承这个人类吃东西的特性,并且他还有一个小弟弟的功能,如下:
为了更清晰的对接口与抽象类有一个直观的理解,接下来新建一个太监类,很显明它可以吃东西,但是没有小弟弟的功能,如下:
通过这个太监的例子,是不是对于接口和抽象类有了一个比较清晰的理解,接下来应用一下:
接下来,咱们将男人与太监装到一上屋子里,如下:
编译运行:
代理与委托:
这里以大头儿子与小头爸爸的故事来展开说明,如下:
首先定义一个洗碗的接口,如下:
接下来定义相关的角色:
接下来应用一下:
接下来引入代理模式,既然小头儿子洗碗只要1块钱,那对于爸爸来说我叫儿子来代替洗碗不就得了,反正老婆大人又不知道,最终给儿子一块钱,自己挣9块钱那也相当happy嘛,那如何委托给儿子来做呢?如下:
这时再运行:
这里爸爸还是可以重写洗碗的方法加一些润色:
单例模式:
这个模式我想不用多解释了,实际当中大量见到的,对于上面的代码其实是有个坑的,如下:
下面来验证一下:
很容易理解啦,因为走构造了,那如果想让儿子是个单例在kotlin中如何搞呢?
此时代码报错了:
当然小头爸爸的代码也报错了,如下:
那怎么修改代码呢?在kotlin中如果是单例对象的话,则不需要在类名之后跟括号了,所以代码修改如下:
转载于:https://www.cnblogs.com/webor2006/p/8350072.html
kotlin面向对象之接口、代理与委托、单例模式相关推荐
- kotlin学习笔记——接口与委托
kotlin中的接口比java7中的要强大很多,与java8的很相似. java7中的接口只能定义行为,不能实现. kotlin中的接口也可以实现函数,但是与类的区别是它们是无状态(stateless ...
- Kotlin学习(11)→抽象类、接口、接口代理
文章目录 1.抽象类 2.接口 3.接口代理 在期待着郭霖先生的<第一行代码(第三版)>时,意识到自己需要补充必要的Kotlin知识,现在通过写博客进行分享,争取拿到书之后早日上手. 使用 ...
- 当Kotlin邂逅设计模式之代理模式(二)
简述: 从这篇文章起,我们将继续Kotlin邂逅设计模式系列篇中的第二篇代理模式.代理模式可以说很多初级中级开发者迷惑的设计模式.但是它确实应用很广,不用多说大家非常熟悉的Retrofit框架,内部使 ...
- Kotin 的代理和委托
代理和委托--大头儿子和小头爸爸的洗碗案例 委托,把自己不干的事情交给别人做 代理,做别人委托的事情 kotlin中接口代理关键字:by 1.场景说明(举例) 围裙妈妈只负责做饭,不负责洗碗 小头爸爸 ...
- 《Kotlin 程序设计》第五章 Kotlin 面向对象编程(OOP)
第五章 Kotlin 面向对象编程(OOP) 正式上架:<Kotlin极简教程>Official on shelves: Kotlin Programming minimalist tut ...
- 代理、委托、钩子与打桩
代理.委托.钩子与打桩 代理 委托 钩子 广义的钩子 打桩 代理 代理(proxy)指的是在需要使用某个事物时,使用另一个事物来代替原本需要的该事物.具体来说,若原本需要某个类的方法,而现在创建了 ...
- 代理、委托、打桩的区别
文章目录 代理 委托 委托与代理的区别 打桩 打桩与代理的区别 代理 代理(proxy):被代理类写好一套 API 的实现对外开放使用,代理类在被代理类的 API 的基础上再封装一层,形成一套与被 ...
- php 类定义抽象方法吗,PHP面向对象:接口与抽象方法
简明现代魔法 -> PHP服务器脚本 -> PHP面向对象:接口与抽象方法 PHP面向对象:接口与抽象方法 2010-07-01 接口(interface)是抽象方法和静态常量定义的集合. ...
- Python面向对象之接口类(抽象类)
Python面向对象之接口类(抽象类):就是制定一个规范.比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方法 ...
最新文章
- 关闭Mycelipse的拼写检查
- bean validation校验方法参数_项目启动时首先校验Spring Boot配置参数
- 石头剪刀布python代码_python实现石头剪刀布程序
- 纯手工打造简单分布式爬虫(Python)
- 换手机的等等!什么时候能用上1000元级5G手机?中国移动公布时间表
- 【最短路径问题笔记】SPFA算法及负环的判断
- 学习JSP大学实用教程
- 资产管理(记账系统)03
- c++和opencv小知识:openCV中convertTo的用法
- 将ip电话注册到服务器上,华为IP电话配置步骤.doc
- 2011新版工业技术 中文核心期刊目录总览
- 计算机组装配置兼容,电脑组装时怎么选择配置主板
- 利用Python下载并解压压缩文件
- python爬虫之帅哥图片爬取
- 刚挣钱的程序猿同学该怎样花钱?
- 计算机界的“武林秘籍”——经典教材推荐
- AODV=DSR+DSDV
- 第一单元----(4)认识编译器 源代码和可执行程序的关系
- FinallShell 离线激活步骤,适用MAC/WIN
- 如何屏蔽百度右侧的广告
热门文章
- python经典程序练习题-99道经典练习题助你全面掌握python基础知识,附技巧答案...
- python自学平台-怎么自学python,大概要多久?
- 手机版的python-手机版python
- python输入输出-python 输入输出 - 刘江的python教程
- python基本语法语句-Python基本语句
- 用python绘制漂亮的图形-用Python画一些漂亮图形--Quora代码赏析
- python while循环语句-Python中的while循环语句怎么用?
- python菜鸟基础教程-python基础菜鸟教程,Python的基础语法
- python绘制3d图形-Python基于matplotlib实现绘制三维图形功能示例
- python读取excelsheet-一文看懂用Python读取Excel数据