Kotlin отмечает наследование, абстрактный класс, интерфейс (6)

Kotlin отмечает наследование, абстрактный класс, интерфейс (6)

Тип данных примечания Kotlin (1) Строка примечания Kotlin (2) Оператор примечания Kotlin (3) Функция примечания Kotlin (4) Объектно-ориентированное примечание Kotlin (5)





1. Наследование

1. Наследование конструктора

Первичный конструктор подкласса наследует первичный конструктор родительского класса, поэтому вторичный конструктор подкласса не может напрямую вызывать конструктор родительского класса.Первичный конструктор подкласса
вызывает первичный конструктор родительского класса:

/**
 * 定义父类
 */
open class Peson(val name: String,
                 val age: Int,
                 val birthDate: Date){
    
      // 声明父类的主构造函数


    //次构造函数
    constructor(name: String, age: Int) : this(name, age, Date())

    override fun toString(): String {
    
    
        return ("Person [name=$name, age=$age, birthDate=$birthDate]")
    }

}


class Student(name: String, age: Int, birthDate: Date,private var sex:Boolean) : Peson(name, age, birthDate) {
    
    

    constructor(name: String, age: Int, birthDate: Date):this(name,age,birthDate,false)
}

Конструктор подкласса вызывает конструктор суперкласса


class Sudent1:Peson{
    
    
    var sex:Boolean=false
    constructor(name: String, age: Int, birthDate: Date,sex:Boolean):super(name,age,birthDate){
    
    
        this.sex=sex
    }
}

2. Переопределить свойства родительского класса

fun main(args: Array<String>) {
    
    

    var  subClass=SubClass()
    println(subClass.x)
}

open class ParentClass {
    
    
    // x成员属性
    open var x = 10
}

class SubClass : ParentClass(){
    
    

    override var x=20
}

3. Перепишите функции-члены

fun main(args: Array<String>) {
    
    

    var  subClass=SubClass()
    subClass.setValue(30)
    println(subClass.x)
}

open class ParentClass {
    
    
    // x成员属性
    open var x = 10

    open fun setValue(x:Int){
    
    
        this.x=x*2
    }
}

class SubClass : ParentClass(){
    
    

    override var x=20

    override fun setValue(x: Int) {
    
    
        super.setValue(x)
        this.x=x*3
    }
}

2. Абстрактный класс

Абстрактный класс содержит абстрактные свойства и абстрактные методы, а также конкретные свойства и конкретные методы.

abstract class Figure{
    
    

    abstract val name:String // 抽象属性
    abstract fun onDraw()  // 抽象方法

    var cName:String="图形"  //具体属性

    //具体方法
    fun cOnDraw(){
    
    
        println("绘制图形")
    }
}

3. Интерфейс

Объявление интерфейса аналогично объявлению абстрактного класса.


interface FigureInterFace{
    
    
   val name:String // 抽象属性
   fun onDraw()  // 抽象方法
    //定义常量
    val cName:String
    get() = "初始化"

    //具体方法
    fun cOnDraw(){
    
    
        println("绘制图形")
    }
  
}

Guess you like

Origin blog.csdn.net/baidu_31956557/article/details/109248005