package cn.kotlin.kotlin_oop03

/**

  • 描述父类
    */
    // open 理解为对外暴露,其他地方可以继承
    open class Father {

// 定义描述性格的变量 注意:var kidney:String 此变量的String是Kotlin的
var kidney:String = “性格文静,热爱运动,喜欢学习”

/**

  • 描述武功的行为/方法
    */
    // open 理解为对外暴露,其他地方可以调用
    open fun showGest() {
    println(“武功平常,只能打打小混混”)
    }
    }

/**

  • 描述子类
    */
    class Child : Father() {

/**

  • 描述武功的行为/方法
    */
    // override代表重写父类的方法
    override fun showGest() {
    println(“拥有上乘武功,神照经,难遇敌手…”)
    }

}

/**

  • main测试方法
    */
    fun main(args: Array) {
    // 打印父类的信息
    var f = Father();
    println(“父类的性格:${f.kidney}”)
    f.showGest() // 父类的武功

println(“-------------------------------------------”)

// 打印子类的信息
var c = Child();
println(“子类的性格:${c.kidney}”)
c.showGest() // 子类的武功

println(“-------------------------------------------”)

// 父类的引用指向子类的对象 以前Java的写法 父类 fc = new 子类();
var fc:Father = Child()
fc.showGest()
}

运行结果:
image



Get/Set方法的使用

接着往下讲解kotlin的get/set方法的使用。

Student.kt

package cn.kotlin.kotlin_oop04

open class Person {
open var personName:String = “我是父类的名字”
}

class Student: Person() {

/**

  • name用private私有修饰,外界其他地方不准访问,隐藏细节
  • name提供set get 方法 对外暴露功能
  • 对细节隐藏,只暴露自定义暴露的东东,就是属于封装的体现
    */
    private var name:String = “”

fun getName() : String{
return name
}

fun setName(name:String) {
this.name = name
}

/**

  • age用private私有修饰,外界其他地方不准访问,隐藏细节
  • age提供set get 方法 对外暴露功能
  • 对细节隐藏,只暴露自定义暴露的东东,就是属于封装的体现
    */
    private var age:Int = 0

fun getAge() : Int{
return age
}

fun setAge(value: Int) {
if (value <0 || value > 150) {
println(“传入的${age}值不规范 出现异常 请检查代码”)
return
}
age = value
}

/**

  • sex用private私有修饰,外界其他地方不准访问,隐藏细节
  • sex提供set get 方法 对外暴露功能
  • 对细节隐藏,只暴露自定义暴露的东东,就是属于封装的体现
    */
    private var sex:String = “”

fun getSex() : String {
return sex
}

fun setSex(sex : String) {
if (“男”.equals(sex) || “女”.equals(sex)) {
this.sex = sex
return
}
println(“传入的${sex}值不规范 出现异常 请检查代码”)
}

/**

  • 获取父类Person的personName
    */
    override var personName: String
    get() = super.personName
    set(value) {personName = value}
    }

/**

  • main测试方法
    */
    fun main(args: Array) {
    var student = Student()

// 设置所以属性信息
setAllData(student)

// 打印所以属性信息
toAllInfoShow(student)
}

/**

  • 设置所以属性信息
    */
    fun setAllData(student: Student) {
    student.setName(“猪小明”)
    student.setAge(99)
    student.setSex(“男”)
    }

/**

  • 打印所以属性信息
    */
    fun toAllInfoShow(student : Student) {
    println(“name:student.getName(),age:{student.getName()}, age:student.getName(),age:{student.getAge()}, sex:${student.getSex()}”)
    }

在Kotlin中,getter和setter是可选的,如果你没有在代码中创建它们,它是会默认自动生成,是看不到的:

class Account {
var name: String = “”
var age: Int = 0
var balance: Double = 0.0
}

以下的代码,就算不写getter/setter,默认也会生成getter和setter,例如:

class Account {
var name: String = “”

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结

我最近从朋友那里收集到了2020-2021BAT 面试真题解析,内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助大家深刻理解Android相关知识点的原理以及面试相关知识

这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~

Android 基础知识点

Java 基础知识点

Android 源码相关分析

常见的一些原理性问题

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
]

腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析

[外链图片转存中…(img-ETfLZnOO-1712610424078)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-R9AbS7cb-1712610424078)]

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐