面向对象
抽象类与接口
- 面向对象的基本概念
本质上就是解决如何用程序描述世界的问题
讨论如何把实际存在的东西映射成程序的类和对象
一种程序设计的思路、思想、方法
实例
// 定义一个类
class Demo{
// 定义一个可读变量
val i=4
// 定义一个方法
fun out(i: int){
println(i)
}
}
// 定义一个接口
interface chouxianglei{
// 定义一个接口方法
fun hello()
}
继承一个接口的时候,使用类名(),实现一个接口的时候,使用类名即可,在Kotlin 中是单继承,多实现;
interface B{
var j: Int
}
interface C
abstract class A
class D(override var j: Int):A(),B,C{
}
接口
Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现:
interface MyInterface {
fun bar() // 未实现
fun foo() { //已实现
// 可选的方法体
println("foo")
}
}
实现接口
一个类或者对象可以实现一个或多个接口。
class Child : MyInterface {
override fun bar() {
// 方法体
}
}
接口与抽象类的区别:
- 接口:
不能有状态
必须由类对其进行实现后使用 - 抽象类:
实现了一部分协议的半成品
可以有状态,可以有方法实现
必须由子类继承后使用 - 共性:
比较抽象,不能直接实例化
有需要子类(实现类)实现的方法
父类(接口)变量可以接受子类(实现类)的实例赋值
继承
Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类:
open class Kotlin4_1 {
open val str: String = "我是父类"
open var str1: String = "我可以被重写"
open fun parent() = "I'm a parent class"
fun parent1(): String {
return "It's not open"
}
}
class Kotlin4 : Kotlin4_1()