1、新建文件kt
2、代码:
/**用户基类**/
open class Person1(name:String){
/**次级构造函数**/
constructor(name:String,age:Int):this(name){
//初始化
println("-------基类次级构造函数---------")
println("name:${name},age:${age}")
}
}
/**子类继承 Person 类**/
class Student1:Person1{
/**次级构造函数**/
constructor(name:String,age:Int,no:String,score:Int):super(name,age){
println("-------继承类次级构造函数---------")
println("学生名: ${name}")
println("年龄: ${age}")
println("学生号: ${no}")
println("成绩: ${score}")
}
}
/**用户基类**/
open class Person2{
open fun study(){ // 允许子类重写
println("我毕业了")
}
}
/**子类继承 Person 类**/
class Student2 : Person2() {
override fun study(){ // 重写方法
println("我在读大学")
}
}
open class A {
open fun f () { print("A") }
fun a() { println("a") }
}
interface B {
fun f() { println("B") } //接口的成员变量默认是 open 的
fun b() { println("b") }
}
class C() : A() , B{
override fun f() {
super<A>.f()//调用 A.f()
super<B>.f()//调用 B.f()
super.b()
}
}
fun main(args: Array<String>) {
var s = Student1("Runoob", 18, "S12345", 89)
println("--------- s2 -------")
val s2 = Student2()
s2.study()
println("--------- c -------")
val c = C()
c.f()
}
3、输出:
4、Student1也可以这样写:
/**子类继承 Person 类**/
class Student1(name: String, age: Int, no: String, score: Int) : Person1(name, age) {
init {
println("-------继承类次级构造函数---------")
println("学生名: ${name}")
println("年龄: ${age}")
println("学生号: ${no}")
println("成绩: ${score}")
}
}
5、说明:
oop中,一般抽象出共同的特性形成一个类,比如person有一个name。
student继承了以后,也具有了这个属性name,然后还可以增加属于自己的属性,形成一个更加具
体的类。比如:只有学生才有学生号、成绩等。