**
Kotlin中类和对象初始化
**
这里类的构造函数写法上和Java的不同,但用法都是一样的,Kotlin中用constructor()来表示一个类的构造方法,而不是Java中的类名。
class School{
// 构造方法
constructor(name:String,address:String)
constructor(name:String){
println(name)//方法体
}
}
当然,你也可以像下面这样写构造函数,constructor关键字可以被省略。
class SchoolOne constructor(name:String,address:String){
//init{}是构造方法的方法体
init {
println(name)
}
}
类的继承
1. 提取多个类的共性的到一个跟抽象的类,即父类
2.子类拥有父类的一切特征
3.子类也可以自定义自己的特征
4. 所有类都是最终继承自Any
open关键字跟Java中的final是恰恰相反的。对于可以重写的函数,都需要显示的指明,使用的是open关键字。如果没有,在子类中声明跟父类相同的方法是非法的。
open class Animal constructor(var name: String, var eat:String, var character:String){
init {
println("这是$name,他喜欢吃$eat,性格$character")
}
}
//类Cat和Dog 继承自Animal
class Cat constructor(name: String,eat: String,character: String):Animal(name,eat,character)
class Dog constructor(name: String,eat: String,character: String):Animal(name,eat,character)
fun main(args: Array<String>) {
//创建类实例。跟Java类似,只是没有new关
var shcool:School=School("asdf")
var shcoolOne:SchoolOne= SchoolOne("很水中学","中国")
var cat:Animal=Cat("猫","鱼","温顺")
var dog:Animal=Dog("狗","骨头","忠心")
println(cat is Animal) //判断猫是不是动物 是就返回true
println(cat is Dog) //判断猫是不是狗 不是就返回false
}