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
阅读全文