Kotlin基础(五)类

定义一个可以被继承的类: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值