kotlin 类继承的语法

写段测试代码:

Kotlin 复制代码
open class Person { // 加open关键字,可以被子类继承
    open var name: String = ""
    open var age: Int = 0
    
    constructor(name: String, age: Int) {
        this.name = name
        this.age = age
    }
    
    override fun toString() : String {
        return "我是${name}, 年龄$age." //这里不能写this.name, this.age,不然会栈溢出。为啥??
    }
}

class Daxia : Person {
    var kongfus: List<String> = listOf()
    var wuli: Int = 0
    
    constructor(name: String, age: Int, kongfus: List<String>, wuli: Int) : super(name, age) {
        this.kongfus = kongfus
        this.wuli = wuli
    }
    
    override fun toString() : String {
        return super.toString() + "我会的武功:${kongfus}, 我的武力值: $wuli"
    }
}

fun main() {    
    val zhouzhiruo =  Daxia("周芷若", 23, listOf("九阴真经"), 89)
    val tianboguang = Daxia("田伯光", 30, listOf("狂风刀法"), 81)
    val duanzhengchun = Daxia("段正淳", 42, listOf("一阳指"), 80)
    val jiumozhi = Daxia("鸠摩智", 40, listOf("小无相功", "少林七十二绝技", "少林易筋经", "火焰刀"), 96)
    
    println(zhouzhiruo.toString())
    println(tianboguang.toString())
    println(duanzhengchun.toString())
    println(jiumozhi.toString())
}

打印:

ok.

相关推荐
ShineWinsu2 小时前
对于Qt:QPushButton常见属性的解析
开发语言·c++·qt·api·gui·按钮·qpushbutton
外贸GEO优化2 小时前
外贸独立站的可抓取性:JS 渲染、懒加载与无限滚动到底影响什么
开发语言·javascript·ecmascript
飞浪纪元[FWC–FE]2 小时前
Qt 工程创建与 CMake / qmake 构建规范
开发语言·数据库·qt
YB13752 小时前
kotlin与函数式编程
kotlin
后台模板学习2 小时前
Go Web开发中任务调度框架的源码解析与高可用实现方案
开发语言·后端·golang
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
fpcc2 小时前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
吾与谁归in2 小时前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
昂好的day3 小时前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf