Kotlin开发安卓APP笔记-类和对象(2)
来源:互联网 发布:跨越百年的美丽 知乎 编辑:程序博客网 时间:2024/06/07 01:03
上一篇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 }}
- Kotlin开发安卓APP笔记-类和对象(2)
- Kotlin开发安卓APP笔记-类和对象(1)
- Kotlin开发安卓APP笔记-数据类型
- Kotlin开发安卓APP笔记-接口
- Kotlin开发安卓APP笔记-函数和lambda表达式(2)
- Kotlin开发安卓APP笔记-协程(代替线程)
- Kotlin开发安卓APP笔记-条件语句和循环语句
- Kotlin开发安卓APP笔记-函数和lambda表达式(1)
- 《转》Kotlin开发安卓APP笔记-函数和lambda表达式(3)
- Kotlin开发安卓APP笔记-创建工程及基础语法
- Kotlin开发安卓APP笔记实战-写个简易记事本(需求分析)
- Kotlin 安卓开发
- kotlin开发安卓
- 安卓开发之Kotlin
- Kotlin 类和对象
- Kotlin 类和对象
- 安卓APP开发优势和概述
- 安卓App开发
- database:mysql(C++)
- 设置那navigationbar title 的字体
- rem responsive js
- 安卓混淆大全,包用包对
- Python基础知识点
- Kotlin开发安卓APP笔记-类和对象(2)
- [分享]钛极OS(TiJOS)之电源管理
- java自学笔记(第三天)
- http 和 https 有何区别?
- Servlet.service() for servlet [springMVC] in context with path [/project_manager] threw exception [R
- replaceAll时遇到的$转义问题
- selenium示例
- Error:A problem was found with the configuration of task ':app:packageDebug' 问题解决
- excel自定义公式提取汉字