kotlin编程基础之类和对象(一)
类其实就是一个模板,一般要把它变成对象才能使用,就是实体化。例如:fun main(args: Array<String>) {
class People
val p=People()
print(p)
}这里的class People就是建了一个人类的模板,下边People()就是给他实体化,然后再赋值给一个常量,这里输出一串没有任何意义的哈希值,输出为:Class_objectKt$main$People@5e2de80c
这个类如何使用呢,下面先给他加点属性:
fun main(args: Array<String>) {
class People(var walk:String,var talk:String)
val p=People("走路","说话")
println(p.walk)
println(p.talk)
}
把他实体化的时候同样也要初始化一下他的属性,如果在类里面已经初始化好了,也可以不初始化,如:fun main(args: Array<String>) {
class People(var walk:String="走路",var talk:String="说话")
var p=People()
println(p.walk)
println(p.talk)
}以上两种输出结果都一样,为:
走路
说话
类里面也可以有方法,其实就是类里面的函数,如:
fun main(args: Array<String>) {
class People(var walk:String="走路",var talk:String="说话"){
fun doHomework(){
println("正在做家务")
}
}
var p=People()
p.doHomework()
}
输出结果为:
正在做家务
类也可以用于继承,比如聪明的电脑将来可以继承人类,人能干的活电脑也能干:
fun main(args: Array<String>) {
open class People(var walk:String="走路",var talk:String="说话"){
fun doHomework(){
println("正在做家务")
}
}
class SmartComputer:People()
var p=SmartComputer()
p.doHomework()
}
不过类默认是不允许继承的,你要在前面加一个open关键字。输出结果为:
正在做家务
继承后还可以重写原来类的方法,比如:
fun main(args: Array<String>) {
open class People(var walk:String="走路",var talk:String="说话"){
open fun doHomework(){
println("正在做家务")
}
}
class SmartComputer:People(){
override fun doHomework(){
println("我是电脑,我在帮主人做家务")
}
}
var p=SmartComputer()
p.doHomework()
}
被重写的那个方法也必须是open的才能被重写,输出结果为:
我是电脑,我在帮主人做家务
类跟函数一样,都可以使用泛型,如:
fun main (args: Array<String>) {
open class People<T> (var walk:T,var talk:T){
open fun doHomework(){
println("正在做家务")
}
}
var p=People<String>("走路","说话")
var f=People<Int>(1,2)
println(p.walk)
println(f.walk)
}
这里创建了两个对象p和f他们可以实体化不同类型的属性,输出结果为:
走路
1
属性也可以在init代码块里初始化,如:fun main (args: Array<String>) {
class People(a:Int=1){
var b:Int?= null
init {
b=a
}
}
println(People().b)
}
输出结果为:1
页:
[1]