Kotlin---类与构造函数

类

Kotlin中的类定义与Java中无异,只是在Kotlin中,再也没有static所声明的静态内部类。

// 创建对象
var childNest: ChildNest = ChildNest()
// 类定义
class ChildNest {
    fun function() {

    }
}

构造函数

Kotlin中类的构造函数以及属性初始化的方式有多种。

  • 在类名后加入构造函数参数,并且在类内部进行初始化或者使用init代码块进行初始化
class Child(name: String, age: Int = 18) {
    var mName: String = name
    var mAge: Int = age

    init {
        mName = name
        mAge = age
    }
}
  • 也可以通过与Java、C++中的构造函数一样,来为成员变量赋值,并且构造函数可以重载,不过还是建议带默认值使用一个构造函数
class Child {
    var mName: String
    var mAge: Int

    constructor(name: String, age: Int = 18) {
        mName = name
        mAge = age
    }

    constructor(name: String, age: Int = 18, num: Int) {
        mName = name
        mAge = age
    }
}

属性的set/get方法

通常在外部设置成员属性的时候需要有一些条件判断,或者是修改操作,我们可以在属性后定义set/get方法来进行判断与修改

其中,set/get方法中会有field来代表对应的属性,对field进行操作即可。而Kotlin称之为Backing Fields。

open class Child(name: String, age: Int = 18) {
    var mName: String = name
        get() : String {
            Log.e("Child", "Child get Called$field");
            return field.replace('b', 'c', true)
        }
        set(value) {
            Log.e("Child", "Child SetName Called$value")
            field = value.toUpperCase()
        }
    var mAge: Int = age
}

而外部访问则直接使用.来访问即可

var c: Child = Child(name = "bob", age = 30)
Log.e("tag","C:${c.mName}")

默认Kotlin就为属性提供来set/get方法,如果不需要修改的话,则不需要重写

访问描述符

在Kotlin中仍然具有private、protected、public的访问描述符。默认public,所以不需要写。

  • private:本类可以访问
  • protected:子类可以访问
  • public:所有类都可以访问
class Child(name: String, age: Int = 18) {
    var mName: String = name
    var mAge: Int = age


    private fun functionPrivate() {
        Log.e("Child", "functionPrivate Called")
    }

    protected fun functionProtected() {
        Log.e("Child", "functionProtected Called")
    }

    fun functionPublic() {
        Log.e("Child", "functionPublic Called")
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,959评论 9赞 118
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,188评论 19赞 139
  • 面向对象编程(OOP) 在前面的章节中,我们学习了Kotlin的语言基础知识、类型系统、集合类以及泛型相关的知识。...
    Tenderness4阅读 4,678评论 1赞 6
  • 写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kot...
    胡奚冰阅读 1,562评论 5赞 11
  • 2015年7月17日 嘉峪关 上午全车直接前往嘉峪关景区。我从古老的原城墙遗址中,能依稀嗅到远古的味道和满目疮痍的...
    模模的世界阅读 458评论 0赞 0

友情链接更多精彩内容