从零开始学Kotlin第四课
面向对象:
//妹子 性格 声音
class Girl(var chactor:String,var voice:String) fun main(args: Array<String>) {
var girl=Girl("彪悍","甜美")
println("声音"+girl.voice)
}
行为
//妹子 性格 声音
class Girl(var chactor:String,var voice:String){
//行为
fun smile(){
println("妹子笑了下,么么哒")
}
} fun main(args: Array<String>) {
var girl=Girl("彪悍","甜美")
println("声音"+girl.voice)
girl.smile()
}
java的三大特性封装继承多态
属性私有private是和jav一样的,继承不一样,案例:
父类: /**
* open允许被继承
*/
open class Fathor{
open var chactor:String="性格内向"
/**
* 方法允许重写
*/
open fun action(){
println("公共场合喜欢大声喧哗")
} } 子类: /**
* 继承:FATHOR
*/
class Son:Fathor(){
/**
* 重写方法
*/
override fun action(){
println("很乖巧")
}
} 调用类: fun main(args: Array<String>) {
var son1=Son();
println("儿子的性格:${son1.chactor}")
son1.action()
}
抽象类:
接口实现:
interface IMan{
fun xiaodidi()
} class Man:IMan
{
override fun xiaodidi() {
println("18cm")
}
}
java 的instanceof 被Kotlin简化为is
代理和委托:
爸爸委托儿子洗碗的案例:
package DL
//洗碗的接口
interface IWashBowl{
fun washing()
} package DL /**
* 大头儿子
*/
class BigHeadSon:IWashBowl{
override fun washing() {
println("我是大头儿子一次洗碗一块钱") } } package DL /**
* 小头爸爸委托儿子洗碗 委托模式:by +委托对象
*/
class SmallHeadFather:IWashBowl by BigHeadSon(){ /**
* 重写方法,更改后继续调用委托对象的方法,如果不重写默认调用委托对象方法
*/
override fun washing() {
println("小头爸爸洗碗一次10元")
BigHeadSon().washing()
}
} package DL class Demo {
} fun main(args: Array<String>) { var father=SmallHeadFather()
father.washing() }
现在大头儿子每次创建对象都会产生一次大头儿子,做个单例模式吧。
package DL /**
* 大头儿子
*/
object BigHeadSon:IWashBowl{
override fun washing() {
println("我是大头儿子一次洗碗一块钱") } }
package DL /**
* 小头爸爸委托儿子洗碗 委托模式:by +委托对象
*/
class SmallHeadFather:IWashBowl by BigHeadSon{ /**
* 重写方法,更改后继续调用委托对象的方法,如果不重写默认调用委托对象方法
*/
override fun washing() {
println("小头爸爸洗碗一次10元")
BigHeadSon.washing()
}
}
package DL class Demo {
} fun main(args: Array<String>) {
//单例模式
BigHeadSon.washing()
}
枚举的使用:
package DL enum class Week {
星期一,星期二,星期三,星期四,星期五,星期六,星期日
} fun main(args: Array<String>) { println( Week.星期一.ordinal)//获取元素位置
}
印章类型:个人感觉像是内部类
枚举更在意数据,sealed更在意数据类型。
从零开始学Kotlin第四课的更多相关文章
- 从零开始学Kotlin第六课
Kotlin调用java代码: 1.如果是内部工程的类,直接调用,如果是外部的工程项目按照java的方式将jar包导入进来. 2.实例化java对象 我们之前学java的时候实例化对象是这个样子的. ...
- 从零开始学Kotlin第七课
1.强制类型转换需要在后面加两个感叹号 2.如果需要在java代码调用kotlin的方法时候使用文件名+kt.方法 3.object 类名 是创建匿名内部类的写法 调用 传入class对象 4.在to ...
- 从零开始学Kotlin第三课
kotlin函数和函数式表达式的简化写法: fun main(args:Array<String>) { var result=add(2,5) println(result) ///简化 ...
- 从零开始学Kotlin第五课
函数式编程入门: package EL fun main(args: Array<String>) { var names= listOf<String>("tom& ...
- 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)
原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 1.安装对应dll Update-Package Xama ...
- 从零开始学Kotlin第一课
Kotlin的方法: 一个简单的计算器: fun main(args:Array<String>){ //主函数main方法 var a=8; var b=9; println(plus( ...
- 从零开始学Kotlin第二课
字符串模板 fun main(args:Array<String>){ //主函数main方法 println(diaryGenerater("天安门")); } // ...
- Java从零开始学二十四(集合工具类Collections)
一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二 ...
- 小哈学Python第四课--运算符
运算符: 1.算数运算符: 2. 比较运算符 3.赋值运算符 4. 逻辑运算符: 5. 成员运算:
随机推荐
- 浏览器有别_HTTP报文的回车换行
本来以为浏览器HTTP报文的生成应该是完全一致的.但最近在做一个项目的时候,发现Safari和Chrome提交同一份表单,后端的处理结果不一致.看提交结果呢,是因为Safari多了个回车.由于原项目的 ...
- 打造专属测试平台4-使用Docker部署Django项目
编写完项目代码后,为了稳定的运行,需要将其部署至服务器.这里我选择了Docker去部署Django后端代码. 首先来看看Runoob对Docker的介绍: Docker 是一个开源的应用容器引擎,基于 ...
- java定时任务调度框架
java定时任务目前主要有三种: Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在 ...
- Coursera Deep Learning笔记 结构化机器学习项目 (下)
参考:https://blog.csdn.net/red_stone1/article/details/78600255https://blog.csdn.net/red_stone1/article ...
- [对对子队]会议记录5.18(Scrum Meeting5)
今天已完成的工作 何瑞 工作内容:搭建第8关 相关issue:搭建关卡7.8.9 相关签入:feat:初步搭建了Lv8 吴昭邦 工作内容:搭建第8关 相关issue:搭建关卡7.8 ...
- Java设计模式——模板设计模式
模板设计模式 1.模板模式简介 模板模式(Template ):模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑 ...
- SpringCloud 2020.0.4 系列之Hystrix看板
1. 概述 老话说的好:沉默是金,有时适当的沉默,比滔滔不绝更加有效. 言归正传,前面我们聊了有关 Hystrix 降级熔断的话题,今天我们来聊聊如何使用 turbine 和 hystrix dash ...
- 『学了就忘』Linux基础 — 13、Linux系统的分区和格式化
目录 1.Linux系统的分区 (1)磁盘分区定义 (2)两种分区表形式 (3)MBR分区类型 2.Linux系统的格式化 (1)格式化定义 (2)格式化说明 1.Linux系统的分区 (1)磁盘分区 ...
- Go并发编程--Mutex/RWMutex
目录 一.前言 二. Mutex 2.1 案例 三. 实现原理 3.1 锁的实现模式 3.2 Go Mutex 实现原理 3.2.1 加锁 3.2.2 解锁 四. 源码分析 4.1 Mutex基本结构 ...
- 全志TinaLinux编译错误fatal error: unicode/ucnv.h: No such file or directory
今天开始正式干活了 拿到一个全志Tina的板子还有一个SDK压缩包,要求我这周(只剩一天半...)就要把sdk编译通过并且把板子跑起来. 还特别跟我说他们试了下这个sdk编译没法通过,会报错... 竟 ...