初出茅庐在学习,君若有不喜之处,吾愿听君之见,然存己身之断!海纳百川,但存己见!
凡是能看到这里,相信各位都是程序员吧,但是程序员也有不同,有做Web前端的,有做后台的,也有做移动端的!做这些方向的技术人员都是程序员,所以,可以理解为继承自程序员,来表述各位的专业方向!这就是继承!可以参考:Java 学习之路 类的继承
Java中的继承通过 extends 关键字来实现!Kotlin 则通过 “ : ” 来实现,接下来就用继承来实现上方的关系,先只实现猫咪那一个分支!
首先创建Cat类
open class Cat {
var skill = " 我会上树 "
var dislike = " 我讨厌洗澡 "
}
在这里在类前加入了open关键字,它的作用是表明这个类是可以被继承的,如果不加,则表明这个类不可以被继承!
创建黄上这个猫,并继承自猫类:
class CatYellowUp : Cat() {
var name = "我是猫黄上"
}
继承使用 “ : ” ,后面接的是继承的类,并加括号!代表 CatYellowUp类 继承自 Cat类!
创建红桃猫,也是如此:
class CatRedPeach : Cat() {
var name = "我是猫红桃"
}
这样就实现了最基本的继承关系!之后在main函数中运行它!
fun main() {
val yellowUp = CatYellowUp()
val redPeach = CatRedPeach()
//打印黄上
println(yellowUp.name + yellowUp.skill + yellowUp.dislike)
//打印红桃
println(redPeach.name + redPeach.skill + redPeach.dislike)
}
构造分为 主构造函数 和 次构造函数 ,Kotlin中每个类都会有一个默认不带有参数的主构造函数,当然,你也可以给它加入一些参数。
主构造函数没有函数体,直接定义在类名之后,举个例子:
class Study(var name: String) {
fun study() {
println(name + " 在学习Kotlin")
}
}
此时在main函数中调用就要传入这个参数
fun main() {
Study("CSDN女神").study()
}
如果需要继承,可以这么写,举例 CSDN女神类 继承自那个写好的Cat类,当然,我没有猫的属性!
class CsdnGoddess(val par: String) : Cat() {
}
次构造函数通过 constructor 关键字来实现,举个例子
Study:
class Study {
var str = ""
constructor(name: String) {
str = name + " 在学习Kotlin"
}
fun study() {
println(str)
}
}
Main:
fun main() {
Study("CSDN女神").study()
}
结果是一样的!值得注意的是:当一个类主构造函数和次构造函数同时出现时,所有的次构造函数都必须调用主构造函数! 代码举例:
class CsdnGoddess(var name: String, age: String) {
constructor(name2: String) : this(name2, "") {
}
}
在Java中,实现接口用关键字 implements,但在Kotlin中不是,而是使用 “ : ”,没错,无论是继承还是实现接口都是使用冒号,如果需要继承并实现接口,那么只需要用逗号分割即可!如下:继承自Cat并实现Studys接口!
创建Studys接口:
interface Studys {
fun study()
fun sleep()
}
实现Studys接口:
class CsdnGoddess(var name: String) : Cat(), Studys {
override fun study() {
println(name + "学习")
}
override fun sleep() {
println(name + "睡觉")
}
}
之后便是重写方法!运行试一下!
fun main() {
CsdnGoddess("CSDN女神").study()
CsdnGoddess("CSDN女神").sleep()
}
这就是一些基本的使用方法,有很多跟Java很相似,接下来要学习Java中所没有的一些东西!
初出茅庐在学习,君若有不喜之处,吾愿听君之见,然存己身之断!海纳百川,但存己见!