一. 继承和构造函数(Kotlin)

【Python机器学习实战】 | 基于PCA主成分分析技术读入空气质量监测数据进行数据预处理并计算空气质量综合评测结果 主成分分析(Principal Component Analysis, PCA)是一种常用的机器学习和数据分析技术,用于降低数据维度、识别数据中的模式、发现变量之间的关系等。 阅读详情

一、继承

1、Kotlin继承与Java继承的不同之处

  • 在Kotlin中,类并不是生来就能被继承的,只有在类 class关键字前添加 open关键字 的类才可以被继承。之所以这样操作是因为如果一个类不是专门设计来被继承的,那么就很可能出现未知的风险。
  • Kotlin中继承 使用 “:”(冒号),而非是extends关键字。
open class Person{
    var name = ""
    var age = 0
}

//Student类继承Person类
class Student:Person(){


}

 


 

二、构造函数

在Kotlin中存在两类构造函数,分别是 主构造函数 和 次构造函数。

1. 主构造函数

特点:

  • 没有函数体
  • 直接定义在类名后面,所需要的参数直接放入括号类
    class Student(val s_no:String,val age:Int):Person(){
        ...
    }

     

  • 如果需要在主构造函数中编写逻辑,需要使用 init 结构体
class Student(val s_no:String, val grade:Int):Person(){

    init{
        println("s_no is " + s_no)
        println("grade is "+ grade)
    }
}

 


注:你可能会看着继承的Person后面的那个()不顺眼,这个括号究竟是干什么用的呢?

因为子类中的构造函数必需调用父类中的构造函数,但又因为在Kotlin中,主构造函数是没有函数体的。你当然可以每次都在init结构体中调用,但是在大多数情况下,init结构体是不适用的,而且每次都写会很不方便,所以,这个继承的类后面的()就起到了指明当前类的主构造函数所调用的是父类的哪个构造函数的作用。此处只有一个空的括号,代表调用父类中没有无参的构造函数。

open class Person{
    var name = "空"
    var age = 0
}


class Student:Person(){
    
    var sno = "未设置"
    var grade = 1
}

fun main(){
    
    val s = Student()
    println(s.name)
    println(s.age)
    println(s.sno)
    println(s.grade)
}

 输出结果:

空
0
未设置
1

 


 

  • 主构造函数中声明的 val 或者 var 的参数将自动成为该类的属性(如 Student类的 sno和grade属性),而没有val 或者 var关键字的参数,其作用域仅限于主构造函数内有效(如 Student类的name和age属性)。
open class Person(val name:String, val age:Int){
}


class Student(val sno:String,val grade:Int,name:String,age:Int):Person(name,age){

}

fun main(){
    
    val s = Student("S0001",1,"Hack",20)
    println(s.name)
    println(s.age)
    println(s.sno)
    println(s.grade)
}

输出结果:

Hack
20
S0001
1

二、次构造函数

一个类可只能有一个主构造函数,但是可以有多个次构造函数。

  • 次构造函数有函数体,并通过 constructor关键字 定义。
  • 当一个类既有主构造函数又有次构造函数时,所有的次构造函数都必须调用主构造函数(包括间接调用)。
open class Person(val name:String, val age:Int){
}


class Student(val sno:String,val grade:Int,name:String,age:Int):Person(name,age){
    
    constructor(name:String,age:Int):this("",0,name,age){
        
    }
    
    constructor():this("",0){
        
    }

}

fun main(){
    
    val s = Student("S0001",1,"Hack",20)
    val s1 = Student("Hack",20)
    val s2 = Student()


}

当类中只有次构造函数,没有显示的定义主构造函数时,就代表该类没有主构造函数的。

open class Person(val name:String, val age:Int){
}



class Teacher:Person{
    constructor(name:String,age:Int):super(name,age){
        
    }
}

Teacher类没有显示的声明主构造函数(在类名Teacher后没有括号),同时又声明了次构造函数,所以此时的Teacher没有主构造函数。

因为Teacher没有主构造函数,所以继承Person类的时候就不需要在Person后加括号了。

有因为没有主构造函数,所以次构造函数只能调用父类的构造函数,所以 this关键字被换成了 super关键字

 


 

 

基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(下) 本研究深入探讨了医疗AI在临床落地中的核心矛盾,即如何从“模型能答”迈向“系统可信、可用、可追溯”。为解决此矛盾,我们创新性地提出并详细设计实现了一套基于模型上下文协议(MCP)的**“可插拔式临床AI工具链”**架构。通过将复杂的医疗AI系统解构为Host、MCP Server和标准协议三层,并将各类能力(临床决策、影像分析、合规审计)封装为标准的、可独立演进的Server,我们成功地构建了一个模块化、高内聚、低耦合的系统。 阅读详情

相关推荐

CRaxsRat v7.6 安装与使用教程(附工具下载)

摘要:本文介绍远程管理工具CRaxsRat v7.6的合法应用与基本操作,强调仅限授权环境使用。该工具支持多客户端管理、TLS加密及文件/进程控制等功能,适用于内网维护与安全测试。安装需Windows 10/11系统及.NET 4.8,步骤包括解压运行、配置监听端口及生成客户端。文中提醒防火墙设置与杀软误报问题,并重申禁止非法用途,建议在虚拟机或隔离环境学习使用。

lzj781210的博客 3787

Kotlin学习之路(六):继承

Kotlin学习之路(六):继承

RQ997832的专栏 5852

双目立体匹配算法:SGBM

SGBM(Semi-Global Block Matching)是一种用于计算双目视觉中视差(disparity)的半全局匹配算法,在OpenCV中的实现为semi-global block matching(SGBM)。它是基于全局匹配算法和局部匹配算法的优缺点,提出了一种折中的方法,既能保证视差图的质量,又能降低计算复杂度。

weixin_45303602的博客 9402

【3】Kotlin基础——类的继承与构造函数

在开始类的继承之前,我们先来了解一下如何用Kotlin语言声明一个类并对其进行实例化。

熊熊饲养员的优快云! 977

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 324

知识图谱与人工智能本体论:构建机器认知的语义基石

本文探讨了知识图谱与人工智能本体论如何作为机器认知的语义基石,让AI从‘知道数据’迈向‘理解知识’。文章详细拆解了本体论的核心构件与构建方法,并阐述了从本体到知识图谱的实践路径,包括知识获取、融合、存储及推理应用,最终分析了其在智能搜索与专家系统等场景中带来的根本性重塑。

nginx7reverse的博客 909

Kotlin:类、构造函数、继承

类声明由类名、类头(指定其类型参数、主构造函数等)以及由花括号包围的类体构成。类头与类体都是可选的; 如果一个类没有类体,可以省略花括号。 在 Kotlin 中的一个类可以有一个主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分:它跟在类名(与可选的类型参数)后。

ChinaDragon10的博客 2033

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 345

kotlin基础

上一篇文章我们介绍了Kotlin中扩展函数和高阶函数在实际开发中的运用。这一篇文章我们继续讲解Kotlin中的基础知识类与继承。关于接口、单例类、数据类、密封类、枚举类计划将作为单独文章来写,因为Kotlin中的类有很多细节方面的知识点,放在一篇文章来写感觉很难介绍清楚。下面我们开始本篇文章的学习。其实类与继承相对于高阶函数和Lambda表达式是更容易理解一点。但是这其中密密麻麻的小知识点,在我们实际开发中都是会遇到的,我们不能只停留在代码搬运的层面上,而是要去理解它。这样我们才能在实际开发中灵活的运用它。

2301_78775013的博客 1299

【VisDrone数据集】YOLOX训练VisDrone数据集步骤与结果

YOLOX训练VisDrone数据集步骤与结果。

Gorgeous_wxd 2233

【工程师一次性讲明白系列】什么是电压驻波比 (VSWR)

电压驻波比(VSWR)是电信号传输过程中非常重要的指标,控制VSWR的大小可以提高信号传输效率和系统稳定性。通过优化阻抗匹配,可以有效地减少反射信号,提升通信质量!🚀📡。

weixin_43199439的博客 1298

Kotlin语言中的继承与构造函数(详解)

学习kotlin时,有很多小伙伴无法理解为何有的继承结构父类后面需要加括号,有时候却不用加括号,本篇文章小编将为你们解除这个困惑!顺便为大家详解一下kotlin中的主构造函数和次构造函数。 首先我们先来了解一下kotlin中的继承

yzk134144的博客 2495

手把手教你学 NPU 驱动开发--第一部分:基础准备 开发环境搭建:Linux 内核编译与 NPU 仿真平台配置

摘要:本文详细介绍了搭建Linux内核编译与NPU仿真平台的完整流程。主要内容包括:1) 准备ARM64交叉编译工具链;2) 编译支持KGDB调试的Linux内核;3) 构建最小根文件系统;4) 使用QEMU模拟自定义NPU设备;5) 配置KGDB调试环境。文章重点讲解了如何通过修改设备树添加虚拟NPU设备,并提供了开源NPUIP Gemmini作为实验对象。最后展示了简单的"Hello NPU"驱动验证方法,为后续NPU驱动开发奠定了基础。文中还附有常用命令速查表,方便开发者快速搭建调

MHD0815的博客 382

【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )

I . 类继承基本方式 II . 使用 final 禁止类继承 / 方法重写 III . 父类没有主构造函数 IV . 父类有主构造函数 V . 父类构造函数与子类构造函数总结

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1472

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Kotlin基础 类:构造函数 继承 抽象类(三)

类 在 Kotlin 中类用 class 时: class Invoice { } 类的声明包含类名,类头(指定类型参数,主构造函数等等), 以及类主体,用大括号包裹。类头和类体是可选的;如果没有类体可以省略大括号。 class Empty 构造函数 在 Kotlin 中类可以有一个主构造函数以及多个二级构造函数。 主构造函数是类头的一部分:跟在类名后面(可以有可选的类型参数)。 class Person constructor(firstName: String) { } 如果主构造函数没有注解或可见性说

weixin_44614751的博客 559

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【2023】Kotlin教程 第二篇 面向对象与函数式编程 第11章 继承与多态 11.2 调用父类构造函数 11.2.1 使用主构造函数

【2023】Kotlin教程 第二篇 面向对象与函数式编程 第11章 继承与多态 11.2 调用父类构造函数 11.2.1 使用主构造函数

代码改变世界 68

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Kotlin学习手记——单例,211本硕如何通过字节跳动、百度、美团Android面试

val (hello, world) = pair data不能被继承,那么为啥不能有子类呢? 可以先看一下kotlin为data类生成的对应的java类是什么样的,查看方式,doule shift键,然后Actions中输入kotlin Bytecode显示: 点击Decompile即可查看对应生成的java代码 以下是Book的数据类对应生成的java代码 public final class Book { private final long id; @NotNull private final

m0_66264938的博客 235

Kotlin 构造函数、继承

转载https://www.jianshu.com/p/fc54d2241ba7 Kotlin 的构造函数,以及类的继承,和 Java 相比,在使用上还有些差别的,一些写法并不是很好理解,这里简单的分析记录下。 一、类、对象 在学习 Kotlin 构造函数、继承之前,先简单了解在 Kotlin 中如何定义类、创建对象。 class Person { var name: St...

qq_29575707的博客 746

Kotlin Android开发·继承、构造和接口

初出茅庐在学习,君若有不喜之处,吾愿听君之见,然存己身之断!海纳百川,但存己见! 文章目录Kotlin继承Kotlin构造Kotlin接口 Kotlin继承 凡是能看到这里,相信各位都是程序员吧,但是程序员也有不同,有做Web前端的,有做后台的,也有做移动端的!做这些方向的技术人员都是程序员,所以,可以理解为继承自程序员,来表述各位的专业方向!这就是继承!可以参考:Java 学习之路 类的继承 拉出来(Java 学习之路 类的继承)文章中的猫和老虎 Kotlin构造 Kotlin接口 初出茅庐在

两行代码 踏踏实实de工作 7999

Kotlin中的构造函数和继承

Android 使用Kotlin自定义View的方法 1.常规写法: class TestView : View { constructor(context: Context, attributeSet: AttributeSet? = null, defStyle: Int) : super( context, attributeSet, defStyle ) constructor(context: Context, attrib

m0_50904062的博客 1119

Kotlin 继承和接口

一、Kotlin中类的继承 在Java中,类基于Object,而在Kotlin中类基于Any,所有类都默认继承Any。kotlin中的类默认是final类型的,不可被继承,想要作为基类被继承必须使用open关键字修饰。 对于没有超类型声明的类默认超类是Any,Any类只有三个函数~ package kotlin public open class Any { publi...

familyyan的博客 4193

Kotlin 继承

文章目录Kotlin 继承构造函数子类有主构造函数子类没有主构造函数实例重写属性重写END Kotlin 继承 Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类: class Example // 从 Any 隐式继承 Any 默认提供了三个函数: equals() hashCode() toString() 注意:Any 不是 java.lang.Object。 如果一个类要被继承,可以使用 open 关键字进行修饰。 open class Base(

quanhaoH的专栏 5483

Kotlin 知识点总结:类、继承、重构、构造函数、接口

我们通过一段代码 来了解一下 abstract// 抽象类,不能创建实例// 抽象方法 默认就是open(此处省略) 不能实例,必须继承实现//抽象类中的 方法 不是默认open的,所以需要标明其他地方和 java 的都比较相似,这里就不多赘述下面是辛苦给大家整理的学习路线《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!盖了95%以上Android开发知识点,真正体系化!**

2401_84123232的博客 1024
上一篇: Flutter 动画学习
下一篇: 三、在Kotlin中使用Lambda
机器人不开心
博客等级 码龄9年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值