Kotlin observa herança, classe abstrata, interface (6)

Kotlin observa herança, classe abstrata, interface (6)

Tipo de dados de nota Kotlin (1) String de nota Kotlin (2) Operador de nota Kotlin (3) Função de nota Kotlin (4) Nota Kotlin orientada a objetos (5)





1. Herança

1. Herança do construtor

O construtor primário da subclasse herda o construtor primário da classe pai, então o construtor secundário da subclasse não pode chamar diretamente o construtor da classe pai. O construtor primário da subclasse
chama o construtor primário da classe pai:

/**
 * 定义父类
 */
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)
}

O construtor da subclasse chama o construtor da superclasse


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

2. Substitua as propriedades da classe pai

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. Reescrever funções de membro

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. Aula abstrata

Uma classe abstrata contém propriedades abstratas e métodos abstratos, bem como propriedades concretas e métodos concretos

abstract class Figure{
    
    

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

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

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

3. Interface

A declaração de uma interface é semelhante à de uma classe abstrata


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

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

Acho que você gosta

Origin blog.csdn.net/baidu_31956557/article/details/109248005
Recomendado
Clasificación