/**
*
* kotlin当中类和方法默认都是final,要想着继承这个类,必须使用关键字open
* kotlin依然单继承,多实现。对于接口,类似java8。 存在非抽象方法的实现。
*
*/
interface Study{
fun english()
fun chinese() = println("语文")
}
open class Person : Study{
/**
* person类前面存在open关键字,实现了study接口的抽象方法,
* 这个方法默认是open, 如果不想被子类重写,需要前面主动加final关键字
*
*/
final override fun english() {
}
/**
* 默认是final,不可以被子类重写
*/
fun woke(){
}
/**
* 可以被子类重写
*/
open fun eat(){
}
}
class Student : Person() {
override fun eat() {
super.eat()
}
}
/**
* abstract抽象类,抽象方法默认是open,必须被实现。
*
*/
abstract class Woman{
abstract fun bug()
fun eat(){
}
open fun sleep(){
}
}
/**
* 内部类和嵌套类:默认是static嵌套类,不会持有外部类的引用。如果想要持有外部类的引用,需要加inner关键字。
*
*/
class Out{
//嵌套类,不会持有外部类的引用
class Nest{
}
//内部类
inner class Inner{
fun getOutInfo() : Out = this@Out
}
}
/**
*
* constructor 构造方法的关键字
* init 初始化代码块关键字
*
* 若是不想类被其他代码实例化,在constructor前面写private关键字
*
*/
class User constructor(_name : String){
val name : String
init {
name = _name
}
}
/**
* "=="
* java中比较基本数据类型和引用类型。基本数据类型比较值,引用类型比较的是引用。
*
* kotlin中引用类型,本质是调用equals来比较两个值。想要引用比较用"==="运算符
*
*/
/**
* object关键字修饰类。
* 1.定义单例的一种方式,可以直接用类名.方法名,以及类名.属性
* 2.匿名内部类
*
*/
网友评论