Kotlin基础类

Posted 大雄童鞋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Kotlin基础类的主要内容,如果未能解决你的问题,请参考以下文章

名马 合集

动态规划+FloydOpenJudge3368

ES6 新增的数组的方法

文本操作2(paste,cat)

张飞与李逵的人物比较

张飞李逵对比