前言
上一篇提到了Kotlin的一些重要基本语法,可以看到和java的相似度极高。这篇主要是讲解kotlin类和对象的语法,后面将会写一些关于Kotlin的高级使用以及使用Kotlin进行安卓开发。
1.类的创建
kotlin中定义类和类的属性和java都是一样的,只是语法上面的表现形式有所不同
class Person {
// 大括号内是类体构成
fun work(){ ... }
}
类中的属性定义就不作太多的解释,主要还是以栗子为参考
class Student{
var name:String
var age = 18 //Int类型必须有初始化值
constructor(name: String, age: Int){
this.name = name
this.age = age
}
override fun toString(): String {//这里就是重写了toString方法
return "Student(name='$name', age=$age)"
}
}
fun main(args:Array<String>){
var student = Student("heweiwei",18)
println(student.toString())
}
结果输出:
Student(name='heweiwei', age=18)
我们还可以在声明类的时候创建构造函数
class Student(name:String , age : Int){
override fun toString(): String {//这里就是重写了toString方法
return "Student(name='$name', age=$age)"
}
2.类的继承
kotlin类的继承需要注意的是覆写父类的方法和属性
abstract class Person{
abstract var name : String
fun wakeUp(){}//默认为final,无法被覆写
open fun work(){}//可以被覆写
}
class Student : Person() {
override var name : String = ""
override fun work() {
super.work()
print(name+"work")
}
}
class Student2(override var name: String) : Person(){//也可以通过构造函数覆写
override fun work() {
super.work()
print(name+"work")
}
}
fun main(args : Array<String>){
var student : Student = Student();
student.name = "heweiwei"
student.wakeUp()
student.work()
}
3.接口
kotlin的接口不仅可以定义方法,还可以定义方法的具体实现
interface LuDaiMa{
var bugName : String
fun fixBug(){
//...
}
}
class Android(override var bugName: String) : LuDaiMa{
override fun fixBug() {
super.fixBug()
print("fix"+bugName)
}
}
4.类的扩展
Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。简单来说,Kotlin扩展函数允许我们在不改变已有类的情况下,为类添加新的函数,举个栗子
class Student(var name:String)
fun Student.Print(){//扩展函数
print("$name")
}
fun main(arg:Array<String>){
var student = Student("HW")
student.Print()
}
//在Android开发中的一个栗子
fun Activity.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT){
Toast.makeText(this, message, duration).show()
}
5.委托模式
kotlin中自带委托属性,用by关键字,还是看栗子
interface FixBug{
fun fixBug()
}
class Medium:FixBug{
override fun fixBug() {
println("fix")
}
}
class Progremmar:FixBug by Medium(){
}
fun main(args : Array<String>){
Progremmar().fixBug()
}
结语
至此,基本语法部分的重要笔记就记录在这里,详细的可以去看Kotlin的菜鸟教程,下一篇将会着重写一下基于Kotlin编写单例模式