温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android Kotlin类怎么使用

发布时间:2022-06-24 09:32:52 来源:亿速云 阅读:151 作者:iii 栏目:开发技术

这篇文章主要介绍“Android Kotlin类怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android Kotlin类怎么使用”文章能帮助大家解决问题。

    1. 类的声明 & 实例化

    // 格式
    class 类名(参数名1:参数类型,参数名2:参数类型...){
                    // to do 
    }
    // 示例
    class User(userName: String, age: Int){
                   // to do 
    }
    // 实例化
    // Kotlin没有new关键字,所以直接创建类的实例(无参情况 & 有参):
    var user = User()
    var user = User("ABC" , 123)
    // 额外说明:Kotlin支持默认参数
    // 即在调用函数时可不指定参数,则使用默认函数
    class User(userName: String = "hjc", age: Int = 26){
                  // to do 
    }
    // 在实例化类时不传入参数,userName默认 = hjc,age默认 = 26
    var user = User()
    // 在设置默认值后,若不想用默认值可在创建实例时传入参数
    var user = User("ABC" , 123)
    // 注:命名参数
    若一个默认参数在一个无默认值的参数前,那么该默认值只能通过使用命名参数调用该函数来使用
    class User(userName: String = "hjc", age: Int){
        // to do 
    }
    var user = User(age = 26)

    对于构造函数,Kotlin中类可有一个主构造函数 & 多个次构造函数,下面将详细说明。

    2. 构造函数

    2.1 主构造函数

    • 属于类头的一部分 = 跟在类名后,采用 constructor 关键字

    • 不能包含任何的代码。初始化的代码放到以 init 关键字作为前缀的代码块中

    class 类名 constructor(参数名:参数类型){
    	init {       
        //...
        }
    }
    // 示例
    class User constructor(userName: String) {
    	init {       
        //...
        }
    }
    // 注:若主构造函数无任何注解 / 可见性修饰符,可省略 constructor 关键字
    class 类名(参数名:参数类型){
    	init {       
        //...
        }
    }
    // 示例
    class User (userName: String) {
    	init {       
        //...
        }
    }

    2.2 次构造函数

    • 必须加constructor关键字

    • 一个类中可存在多个次构造函数,传入参数不同

    // 形式
    constructor(参数名:参数类型) :{函数体}
    // 示例
    class User(userName: String) {
        // 主构造函数
        init {
            println(userName)
        }
        // 次构造函数1:可通过this调主构造函数
        constructor() : this("hjc")
        // 次构造函数2:可通过this调主构造函数
        constructor(age: Int) : this("hjc") {
            println(age)
        }
        // 次构造函数3:通过this调主构造函数
        constructor(sex: String, age: Int) : this("hjc") {
            println("$sex$age")
        }
    }
    // 实例化类
    User("hjc") // 调用主构造函数
    User()      // 调用次构造函数1
    User(2)     // 调用次构造函数2
    User("male",26) // 调用次构造函数3

    3. 类的属性

    Kotlin的类可以拥有属性:关键字var(读写) / 关键字val(只读)

    class User {
        var userName: String
        val sex: String = "男"
    }
    // 使用属性 = 名称 + 引用
    User().sex  // 使用该属性 = Java的getter方法
    User().userName = "hjc"  // 设置该属性 = Java的setter方法

    4. 可见性修饰符

    Android Kotlin类怎么使用

    5. 继承 & 重写

    • 类似于Java,Kotlin是单继承 = 只有一个父类

    • 区别:Kotlin使用冒号“ : ”继承 & 默认不允许继承(若想让类可被继承,需用open关键字来标识)

    // 用open关键字标识该类允许被继承
    open class Food 
    // 类Fruits继承类Food
    class Fruits : Food()
    • 对于子类重写父类的方法,在Kotlin中,方法也是默认不可重写的

    • 若子类要重写父类中的方法,则需在父类的方法前面加open关键字,然后在子类重写的方法前加override关键字

    // 父类
    // 在类 & 方法前都加了关键字open,为了被继承 & 方法重写
    open class Food {
        open fun banana() {}
    }
    // 子类 
    class Fruits : Food(){
    	// 重写了父类的方法
        override fun banana() {
            super.banana()
        }
    }

    6. 特殊类

    下面将讲解一些特殊的类:

    • 嵌套类(内部类)

    • 接口

    • 数据类

    • 枚举类

    6.1 嵌套类(内部类)

    /**
     * 1. 嵌套类(内部类)
     * 标识:关键字inner
     * 使用:通过外部类的实例调用嵌套类
     */
     class User {
        var age: Int = 0
        inner class UserName {
        }
    }
    var userName: User.UserName  = User().UserName()

    6.2 接口

    /**
     * 2. 接口
     * 标识:关键字interface
     */
    // 声明
    interface A{}
    interface B{}
    // 方法体
    // 接口中的方法可以有默认方法体,有默认方法体的方法可不重写
    // 区别于Java:Java不支持接口里的方法有方法体。
    interface UserImpl{
        fun getName(): String // 无默认方法体,必须重写
        fun getAge(): Int{    // 有默认方法体,可不重写
            return 22
        }
    }
    // 实现接口UserImpl:需重写getName() & 可不重写getAge()
    class User :UserImpl{
        override fun getName(): String {
            return "hjc"
        }
    }
    // 实现接口:冒号:
    class Food : A, B {} // Kotlin是多实现
    class Fruits: Food,A, B {} // 继承 + 实现接口

    6.3 数据类

     /**
      * 3. 数据类
      * 作用:保存数据
      * 标识:关键字data
     */
    // 使用:创建类时会自动创建以下方法:
    //      1. getter/setter方法;
    //      2. equals() / hashCode() 对;
    //      3. toString() :输出"类名(参数+参数值)";
    //      4. copy() 函数:复制一个对象&改变它的一些属性,但其余部分保持不变
    // 示例:
    // 声明1个数据类
    data class User(var userName: String, var age: Int)
    // copy函数使用
    var user = User("hjc",26)
    var user1 = user.copy(age = 30)
    // 输出user1.toString(),结果是:User(userName=hjc,age=30)
    // 特别注意
    // 1. 主构造方法至少要有一个参数,且参数必须标记为val或var
    // 2. 数据类不能用open、abstract、sealed(封闭类)、inner标识

    6.4 枚举类

    /**
     * 4. 枚举类
     * 标识:关键字enum
     */
     // 定义
     enum class Color {
        RED, GREEN, BLUE
    }
    // 为枚举类指定值
    enum class Color(rgb: Int) {
        RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF)
    }

    关于“Android Kotlin类怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI