面向对象:
//妹子 性格 声音
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更在意数据类型。