Kotlin基础(五)类

来源:互联网 发布:赵薇是许宗衡女人 知乎 编辑:程序博客网 时间:2024/05/29 08:33

定义一个可以被继承的类:open关键字
属性列表:constructor

open class BaseDao constructor(var sex : Boolean, var name : String) {}//类ADao继承了BaseDao 类,可以选择是否设置默认值//有默认值的情况下,可以不传参数class ADao(sex : Boolean = false, name: String = "你好") : BaseDao (sex = false, name = "22") {}
实例化一个类即Java中的new一个 类var baseDao = BaseDao (false, "")var aa= ADao(true"")

普通属性和组合属性

class ADao(sex: Boolean, name: String = "你好") : BaseDao(sex = false, name = "22") {    //普通属性    var p = "22"    //组合属性    var lift: Double        get() {            when (this.name) {                "张飞" -> {                    return 89.5                }                "诸葛亮" -> {                    return 78.6                }            }            return 58.3        }        set(value) {            when (this.name) {                "张飞" -> {                    this.sex = true                }                "孙尚香" -> {                    this.sex = false                }            }        }}

子类属性覆盖,和方法覆盖(即Java中的重写)

父类需要加open关键字 open class BaseDao constructor(var sex : Boolean, var name : String) {     open var father = "父亲"     open fun play (){       super.father     }}
子类需要加override 关键字class ADao(sex: Boolean, name: String = "你好") : BaseDao(sex = false, name = "22") {    override var father = "父亲"    override fun play (){    }

嵌套类和内部类

class News {    private var cc = "cc"    //嵌套类,与主类关系并不是十分密切,只是一个形式上的合作    class Cate{    }    //内部类,通常用于不直接对外的类,为主类服务的,可以直接访问主类的属性    inner class Lun{        fun getLang( str : String){            cc = str        }    }}fun main(args: Array<String>) {    //实例化内部类    News().Lun().getLang("hello ")}

数据类

data class MyData(var id: Int, var name: String, var sex : Boolean)fun main(args: Array<String>) {    var data = MyData(1, "hello", false)    //数据类的序列化    data.toString()    //复制,生成一个对象的克隆,并更改属性    data.copy(2, "world", true)    //数据类对象的解构    var (id, name,sex ) = data    println("$id, $name")    //或    data.component1()    data.component2()    data.component3()}

枚举类

enum class  Size {    S,M,L,XL}
fun main(args: Array<String>) {    //列举枚举类的常量    Size.values().joinToString()    Size.values().joinToString { it.name + "--" + it.ordinal }    //枚举常量名称和序号    Size.valueOf("S").name    Size.valueOf("S").ordinal}

类型转换

//判断类型    var a = "";    if(a is String) {    }    if(a !is String) {    }
//类型转换有智能转换和手动转换//智能转换if(a is String) {    println(a.length)}//手动转换//强制转换(转换失败直接报错)var str = a as String//安全转换(转换失败返回null)var str2 = a as? String
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 按揭和贷款的区别 有按揭房贷还能贷款吗 按揭房能不能抵押贷款 按揭贷款是商业贷款吗 什么是按揭房 按揭房能卖吗 按揭房一般首付多少 按揭房可以提前还款吗 按揭房可以二次贷款吗 按揭房怎么过户 mortgage 贷款买的房子可以抵押贷款吗 按接房子如何算代款利息 房贷月供计算器 房贷还款明细计算器 房贷计算 有车抵押贷款 如何用房产证抵押贷款 个人抵押贷款条件 贷款房抵押贷款 个人信用抵押贷款 房产抵押贷款银行 小额抵押贷款条件 银行办理抵押贷款 房子银行抵押贷款 如何办抵押贷款 经济适用房可以按揭吗 2018年各大银行首套房按揭利率 按摩手法 穴位按摩 按摩椅牌子 泰式按摩 金希澈按摩 被按摩师按摩出水 日本按摩师 足底按摩 按摩棒 桃运按摩师 按摩足疗 腿部按摩 按摩垫价格