类的进阶

1.继承

需要被继承的类,类的方法,类的属性都要加open关键字

// 父类没有构造需要的参数
open class Person(){
  var name:String = ""
  var age:Int = 0
}

class Student():Person(){
  var school:String = ""
}

// 父类有需要构造的参数
open class Person(var name:String, var age:Int){
  open fun showInfo(){
    print("hello")
  }
}

class Student(var name:String, var age:Int, var school:String):Person(name, age){
  override fun showInfo(){
    print("hello student")
  }
}

2.抽象类 重写 重载

抽象类不能被实例化,需要子类去继承然后实现抽象方法,所以也不需要加open关键字

abstract class News{
  var origin = "reporter"
  abstract var content:String
  abstract fun newsLength(): Int
}

class schoolNews:News(){
  override var content:String =""
  override fun newsLength():Int = content.length
}

重载:不同参数个数的重载
重写:子类继承父类,重写父类的方法

3.接口interface

接口也不需要加open关键字

interface USB{
  fun add()
  fun remove()
}

class Computer:USB{
  override fun add(){
    print("add")
  }
  override fun remove(){
    print("remove")
  }
}

补充

属性代理
// 属性代理就是将属性的get set都转移到定义的by后面的类里面
// 如果属性val需要实现一个操作符getValue()方法,如果属性是var的话,就要实现getValue()和setValue()方法
class delegates{
  val name by lazy{
    "minger"
  }
}
// lazy 和 lateinit都是延迟初始化
// lazy只能用在val上,lateinit只能用在var上
// lateinit不能用在可空类型和java基本类型上
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • java继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继...
    863cda997e42阅读 694评论 0 1
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,144评论 0 62
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 当有人需要用你,是时候知道婉拒,以前没有拒绝过加家人对我要求,今天我想办法拒绝了去妹妹家帮忙,我想了一些办法并积极...
    Serene汤先允阅读 537评论 0 0
  • 投射宝宝健康康康长大.聪明伶俐可爱.快快乐乐成长 投射自己找份好的工作 投射我和老公越来越亲密.我们睡一个床上回到...
    资亚霏阅读 131评论 0 0