当前位置: 首页 > article >正文

Kotlin面向对象编程

class Person {
    var name: String? = null
    var age: Int? = null
    fun think() {
        println("Mr./Ms.$name, who is $age years old, is thinking!")
    }
}

fun main () {
    val p = Person()
    p.name = "Jimmy"
    p.age = 20
    p.think()
}

在Kotlin中任意一个非抽象类都无法被继承(一个类允许被继承的话,其无法预知子类会如何实现,便存在一些未知风险)

Kotlin中类的主构造函数默认为无参且不存在函数体;但能够显式地为其指定参数,另外还可以借助init结构体为主构造函数实现逻辑

在主构造函数中用关键字val或var进行声明变量将自动被添加为该类的字段,在为子类的主构造函数添加变量时要尤其注意,避免与父类字段造成冲突

open class Person {
    var name: String? = null
    var age: Int? = null
    fun think() {
        println("Mr./Ms.$name, who is $age years old, is thinking!")
    }
}

//显式地位Student类的主构造函数指定参数,并用init结构体为其实现逻辑
class Student(var sno: String?, var grade: Int?) : Person() {
     init {
        println("The sno is $sno")
        println("The garde is $grade")
    }
}


http://www.kler.cn/a/502183.html

相关文章:

  • 前端:前端开发任务分解
  • [笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server
  • python 轮廓 获取环形区域
  • 人工智能实验(四)-A*算法求解迷宫寻路问题实验
  • Kivy App开发之UX控件ProgressBar进度条
  • 2.Numpy练习(1)
  • 《零基础Go语言算法实战》【题目 1-19】检查切片是否为空
  • 一些编译脚本
  • 如何将 sqlserver 数据迁移到 mysql
  • 线形回归与小批量梯度下降实例
  • 机器学习笔记——特征工程
  • OCC+VTK对象高亮
  • <C++学习>C++ Boost 容器操作教程
  • 秩为1的矩阵可以表示为两个向量的外积
  • MetaPhlAn2-增强版宏基因组分类谱工具-一条命令获得宏基因组物种组成
  • 不触碰资金的支付网关有哪些?
  • 图匹配算法(涵盖近似图匹配)
  • 云平台一键部署【Video-Background-Removal】视频换背景,无任何限制,随意换
  • 深入浅出MyBatis框架
  • 六年之约day13
  • 【解决】okhttp的java.lang.IllegalStateException: closed错误
  • 【Linux系统】—— vim 的使用
  • 第27章 汇编语言--- 设备驱动开发基础
  • 【Rust】结构体的方法语法
  • 单片机控制步进电机 A4988 Proteus仿真
  • 拷贝构造函数