| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
类其实就是一个模板,一般要把它变成对象才能使用,就是实体化。例如: 
- 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他们可以实体化不同类型的属性,输出结果为: 
属性也可以在init代码块里初始化,如:- fun main (args: Array<String>) {
 
 -     class People(a:Int=1){
 
  
-         var b:Int?= null
 
 -         init {
 
 -             b=a
 
 -         }
 
 -     }
 
 -     println(People().b)
 
 - }
 
  复制代码 
输出结果为: 
 |   
 
 
 
 |