Kotlin开发安卓APP笔记-类和对象(2)

上一篇Kotlin开发安卓APP笔记-类和对象(1)

修饰符

Kotlin的修饰符包括包括类修饰符classModifier 和访问修饰符accessModifier:

类修饰符classModifier–标示类本身特性
  abstract //抽象类标示  
  final  //标示类不可继承,默认属性
  enum  //标示类为枚举
  open  //类可继承,类默认是final的
  annotation  //注解类
访问修饰符accessModifier–类属性的访问权限修饰符
  private //仅在同一个文件中可见
  protected //同一个文件中或子类可见
  public //所有调用的地方都可见
  internal //同一个模块中可见

继承

继承(inheritance)是面向对象的重要概念。继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式。我们在组合(composition)中看到,组合是重复调用对象的功能接口。我们将看到,继承可以重复利用已有的类的定义。
在Kotlin中所有的类都有一个默认的父类Any,类似于Java中的Object。但不是java.lang.Object
Any提供默认的三个函数equals()hashCode()toString()

class Demo //隐式继承Any

显示继承:

open class Base()
class Demo() : Base()

继承声明

在类的构造函数之后使用 : 标示继承:

class Demo(name:String,age:Int):Base(name,age){

}

当类未声明构造函数时,继承其他类时,也不需要在primary constructor中显示的声明构造函数,必须在secondary constructor中显示调用父类构造函数,若父类有多个构造函数,可选择其一进行调用:

/**用户基类**/
open class Base(name:String){

    /**secondary constructor**/
    constructor(name:String,age:Int):this(name){
        //初始化
    }
}

/**子类继承User类**/
class Demo:Base{

    /**构造函数**/
    constructor(name:String):super(name){

    }

    /**另外一个构造函数**/
    constructor(name:String,age:Int):super(name,age){

    }
}

所有类定义时默认是final属性,不可被继承。若需要继承,使用open关键字进行修饰。

方法重载

方法默认是final的,不可被子类重载,若需要被重载,使用关键词 open 进行修饰,子类重载方法使用 override 关键词:

open class Animal{

    open fun eat(){}

    fun run(){}
}

class Dog:Animal{
    override fun eat(){}
}

override修饰的方法,默认是可以被继承的。若希望不被继承,可以使用 final 关键词修饰。

final override fun fly(){} 

重载规则

当类同时继承类和实现接口,且有相同方法,且相同方法都有实现时,需要在重载方法中调用所继承的方法,使用关键词 super ,T表示所继承或实现的接口(下一篇写接口,看不懂的可以先看看下一篇,或者利用百度谷歌查阅资料):

open class Animal{
    open fun eat(){}
}

interface Eating{
    fun start(){}
}

class Dog:Animal(),Eating{
    override fun study(){
        super<User>.eat() 
        super<Reading>.start() //与上者至少二选其一
    }
}

当接口未实现方法时,默认为父类User的study方法,不需要调用所继承的方法:

interface Eating{
    fun start()
}

class Dog:Animal(),Eating{
    override fun eat(){
        //do nothing
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值