Kotlin入门-必会,接口

Kotlin 接口详解 Kotlin 接口是一种强大的特性,可以帮助开发者定义类或对象应该具有哪些方法,而不需要实现这些方法的具体细节。通过使用接口,可以提高代码的可读性和可维护性,同时方便扩展和复用。本文对 Kotlin 接口进行了详细讲解,希望对您有所帮助。 阅读详情

在这里插入图片描述

前言

Kotlin的继承基本上跟java的类似。

Kotlin强化了接口实现接口的逻辑。可以更清晰的呈现 每个接口类的描述。

除了文字版本,也有Xmind版本 github地址


定义

使用 interface 定义
范例

interface MyInterface {
    fun bar()    // 未实现
    fun foo() {  //已实现
      // 可选的方法体
      println("foo")
    }
}

接口中的属性

只能是抽象的,不允许初始化值。
在接口中声明的属性

  • 要么是抽象的
  • 要么提供访问器的实现

在接口中声明的属性不能有幕后字段(backing field)
实现接口时,必须重写属性。
范例

interface MyInterface {
    val prop: Int // 抽象的

    val propertyWithImplementation: String
        get() = "foo"

    fun foo() {
        print(prop)
    }
}

class Child : MyInterface {
    override val prop: Int = 29
}
与java不同
  • java中可以定义 变量
  • 被继承后,可以 使用这些变量

接口实现

与java一样,在Kotlin中,类也可以实现多个interface

interface A {
    fun foo() { print("A") }   // 已实现
    fun bar()                  // 未实现,没有方法体,是抽象的
}
 
interface B {
    fun foo() { print("B") }   // 已实现
    fun bar() { print("bar") } // 已实现
}
 
class C : A {
    override fun bar() { print("bar") }   // 重写
}
 
class D : A, B {
    override fun foo() {
        super<A>.foo()
        super<B>.foo()
    }
 
    override fun bar() {
        super<B>.bar()
    }
}

在Kotlin中,重写必须要标明override。其实,在java也需要标记。这是早些年,不标记override也不报错。


接口继承

在Kotlin中,接口可以实现接口。

  • 既提供基类型成员的实现
  • 也声明新的函数与属性
    范例
interface Named {
    val name: String
}

interface Person : Named {
    val firstName: String
    val lastName: String
    
    override val name: String get() = "$firstName $lastName"
}

data class Employee(
    // 不必实现“name”
    override val firstName: String,
    override val lastName: String,
    val position: Position
) : Person

解决覆盖冲突

实现多个接口时,可能会遇到同一方法继承多个实现的问题.
这里从简说。在之前的文章中有提及

interface A {
    fun foo() { print("A") }
    fun bar()
}

interface B {
    fun foo() { print("B") }
    fun bar() { print("bar") }
}

class C : A {
    override fun bar() { print("bar") }
}

class D : A, B {
    override fun foo() {
        super<A>.foo()   ///注意看这里
        super<B>.foo()   ///注意看这里
    }

    override fun bar() {
        super<B>.bar()   ///注意看这里
    }
}

遇到同一方法,继承多个实现,那就需要明确标明!


小结

Kotlin接口继承的做法,强调了,实现接口的子类需要了解的东西。而被实现的接口的父类部分则隐藏了。

Kotlin解决了实现多个接口时,继承多个同名实现的问题。

Kotlin入门学习 Kotlin引言简介发展历史数据类型Boolean数据类型Number数据类型kotlin 数字字面量char类型转义符基本类型转换字符串字符串比较字符串模版拆箱装箱与Char数据类型类和对象类申明属性和赋值属性延迟初始化创建对象和访问属性get/set方法主构造函数次构(二级)造函数空类型和智能类型转换空类型智能类型转换包区间数组程序结构常量与变量函数函数定义匿名函数函数用法Lamdba表达式L... 阅读详情

相关推荐

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

Kotlin笔记3-类、属性(成员变量)和接口

目录 一、 类 1. 类的定义 2. 类的构造函数 3. 类的继承和方法、属性的复写 4. Interfaces接口 一、 类 1. 类的定义 通常如下所示: class Invoice { ... } 可以省略参数和函数体,最简单形式如 : class Empty     但是目前还不知道这样定义的类有什么应用场景。 2. 类的构造函数 其中主构造函数primary c...

Hello CYC 1515

Vivado FIR Complier_IP核使用方法

文章依靠该IP核对应手册PG149写的,因为笔者需求简单,没有深入挖掘功能,可以自行下载学习。

2302_80180551的博客 3989

Kotlin 语法特性

导言 为什么是Kotlin?首先它与scala语言一样的外形,省去了大量java式的八股代码。代码非常简洁,同样的功能会大大减少代码量,方便阅读和维护。 其次在java的API基础上做了大量封装,常用的操作进行了封装,从而进一步简化开发的代码。并且基于JVM可以和java无缝结合。也可以编译为javascript,也作为Android的第一语言,使前后端使用同一个语言成为了可能。

pujiaolin的专栏 1354

宿舍网速跑不满?可能是PPPoE的锅!实测OpenWrt切换DHCP+深澜认证,轻松跑满校园百兆宽带

本文探讨了校园网PPPoE协议的性能瓶颈问题,并提供了通过OpenWrt路由器切换DHCP+深澜认证的技术方案,实测可显著提升网速至百兆宽带满速。文章详细介绍了配置步骤、性能对比及常见问题解决方案,帮助用户优化校园网体验。

weixin_31310913的博客 383

计算机组成原理 微程序控制器实验

微程序控制器实验 实验环境 计算机组成原理实验环境 实验目的 掌握微程序控制器的组成原理和工作过程。 理解微指令和微程序的概念,理解微指令与指令的区别与联系。 掌握指令操作码与控制存储器中微程序的对应方法。熟悉根据指令操作码从控制存储器中读出微程序的过程。 实验要求 做好实验预习,读懂实验电路图,熟悉实验元器件的功能特性和使用方法。 按照实验内容与步骤的要求,独立思考,认真仔细地完成实验。 写出实验报告。 实验电路        

Long_UP的博客 7万+

Kotlin实战指南五:继承、接口

转载请标明出处:https://blog.youkuaiyun.com/zhaoyanjun6/article/details/87874895 本文出自【赵彦军的博客】 继承、接口继承子类有主构造函数子类没有主构造函数子类重写父类的方法属性重写接口实现接口接口中的属性接口继承解决覆盖冲突 继承 在 Kotlin 中所有类都有一个共同的超类 Any,这对于没有超类型声明的类是默认超类: class Ex...

赵彦军 1058

【OTFS与信号处理:论文阅读4】OTFS时延多普勒域嵌入导频辅助信道估计(已更新)

【OTFS与信号处理:论文阅读】Embedded Pilot-Aided Channel Estimation for OTFS in Delay–Doppler Channel(快来看看OTFS嵌入式导频设计的经典之作!!!)

Cuby的博客 5335

【Kotlin】接口 ( 声明 | 实现 | 接口方法 | 接口属性 | 接口覆盖冲突 | 接口继承 )

接口总结 : ① 声明与实现 : 使用 interface 关键字声明接口 , 实现时需要重写所有的抽象成员 ( 属性 / 方法 ) ; ② 接口成员 : 接口中的 正常成员属性和成员方法默认使用 open 关键字修饰 , 接口中的抽象成员属性和抽象成员方法默认使用 abstract open 关键字修饰 ; ③ 接口属性及覆盖 : 变量属性声明成抽象属性 , 常量属性可以声明成抽象属性 , 也可以添加访问器 ; ④ 接口覆盖冲突问题 : 实现类实现多个接口 , 使用 super<接口名称> 调用

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

2025.05.28【读书笔记】|如何用SILVA和RFAM数据库高效去除rRNA污染

摘要: 在Ribo-seq等测序数据分析中,清除rRNA污染对结果准确性至关重要。仅使用SILVA数据库可能遗漏5S rRNA污染,建议结合RFAM数据库(特别是RF00001家族)全面清除。操作要点包括:下载两库序列、将RNA碱基U替换为DNA的T、合并序列建立索引,使用bowtie2过滤rRNA reads。注意U/T转换是关键,否则会导致比对失败。该方法能有效提升数据清洁度,为后续分析奠定基础。

980

【Python机器学习】主成分分析(PCA):高维数据的“瘦身术“

主成分分析(PCA)的历史可以追溯到1901年,当时Karl Pearson首次提出了这个概念。在计算机还不存在的年代,PCA是一个纯粹的数学构想,用来简化多变量数据的分析。几十年后,当计算机出现时,PCA成为了数据分析中最早实现的算法之一。从那时起,超过一个世纪的发展中,PCA一直保持着其核心的理论框架和实用价值,这本身就是对这个方法深刻科学性的证明。在现代深度学习时代,许多人可能会认为PCA已经过时了。但事实恰好相反。

nmdbbzcl的博客 981

kotlin

wu

zero_ko的博客 1116

Imagiq AI-PQ 图像质量增强模块详解:联发科 ISP 中的 AI 图像管线实战解析

随着智能手机影像系统对图像质量要求的持续提升,联发科在其 Imagiq ISP 中引入了 AI 驱动的图像增强模块——AI-PQ(AI-based Picture Quality),通过 AI 模型对亮度、色彩、噪声、锐度等多个维度进行动态调节与增强,实现更加智能化和个性化的图像输出效果。AI-PQ 在实际工程中已成为影响照片风格、视频观感和多模组一致性的核心能力之一。本文围绕 Imagiq 平台最新一代 AI-PQ 模块(2024-2025年量产平台为基础),结合实机开发与调优经验,深入剖析其各子模块的算

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1420

Kotlin教程,从入门到精通

前言 Kotlin现在已经更新至1.3. 后续,也将以1.3版本进行讲解。 围绕 What(是什么)、How(怎么用)、Difference(与java的区别)、Intent(意图是什么)四个方面来阐述。 产物:Kotlin整理后的Xmind(更新在github上) 目录结构 [基础篇] 基本类型 ...

王学明 2101

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Kotlin 接口

Kotlin接口是面向对象编程的重要特性,支持默认方法实现、属性声明和多继承。相比Java更简洁,结合空安全和类型推断,广泛应用于Android、后端和跨平台开发。2025年Kotlin 2.0优化了接口性能,尤其在KMP项目中。接口定义使用interface关键字,类通过:实现,可重写抽象方法或使用默认实现。多接口冲突需显式处理,支持可空属性和与类继承结合。实践示例包括车辆管理系统和Android按钮点击处理,展示接口的灵活性和实用性。

m0_57545130的博客 985

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Kotlin接口

1.概述 Kotlin接口即可以有抽象方法,也可以有实现了的方法。接口与抽象类的区别在于接口不能存在状态。接口还可以有属性,不过这些属性只能是抽象的,或者提供访问器的实现。Kotlin的接口与Java的类似,也是可以多继承的。 接下来我们来看年Kotlin如何定义接口,以及多继承情况下如何解决冲突和Kotlin中的属性有何特别。 2.定义 Kotlin接口与Java接口定义一样也是用interface 关键字定义。接口中的方法可以是抽象或已实现了的,如: interface MyInterface{ fu

weixin_40763897的博客 2404

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Kotlin从入门到放弃 第六节 接口

Kotlin中接口部分和Java中几乎是完全一致的,所以这节的内容就简单很多。 接口是用于实现多态编程的重要组成部分。我们都知道,Java中是单继承结构的语言,任何一个类最多只能继承一个父类,但是却可以实现任意多个接口,Kotlin也是如此

weixin_42561996的博客 597

kotlin-接口

与类的伴生对象类似,接口的伴生对象是该接口的单例实例。在 Kotlin 中,接口(Interface)是定义了一组抽象方法(没有实现体)的类型,这些方法可以被其他类实现。要实现继承了其他接口的接口,可以实现其所有的父接口定义的方法,并在实现类中提供所有继承的属性。在 Kotlin 1.4 及以后的版本中,接口中可以定义默认实现的方法。要实现接口中的默认方法,可以选择覆盖该方法,也可以直接继承该默认实现。要实现接口中的属性,可以在实现类中提供一个属性实现。注意,在实现接口中的方法时,需要使用。

qq_55888300的博客 3763

Kotlin入门(32)网络接口访问

手机上的资源毕竟有限,为了获取更丰富的信息,就得到辽阔的互联网大海上冲浪。对于App自身,也要经常与服务器交互,以便获取最新的数据显示到界面上。这个客户端与服务端之间的信息交互,基本使用HTTP协议进行通信,即App访问服务器的HTTP接口来传输数据。HTTP接口调用在Java代码中可不是一个轻松的活,开发者若用最基础的HttpURLConnection来编码的话,至少要考虑以下场景的处理: 1、...

aqi00的博客 4234

Kotlin教程 接口详解

普通方法不需要特殊的关键字修饰。实现的接口使用 , 分割开。

听海的博客 1万+

Kotlin入门-必会,属性篇

前言 本文从以下几个方面进行阐述 定义 getter和setter var val getter和setter方法的权限 注意 幕后字段 什么时候没有field字段? 幕后属性 定义 对于 JVM 平台 幕后字段与幕后属性的区别 编译期常量 延迟初始化属性与变量 解决办法 适用范围 注意 检测一个 lateinit var 是否已初始化(自 1.2 起) 覆盖属性 委托...

王学明 1554

不知道如何入门Kotlin?《Kotlin 入门教程指南》带你从入门,带你飞

前言 如果你是一名 Android 开发者,那掌握 Kotlin 语言对你来说就非常重要了。 Google 宣布将 Kotlin 作为 Android 开发的官方编程语言后,Kotlin 开发者社区一直在快速增长。对于Android 应用开发者来说,仅仅掌握 Java 语言是不够的, 还应该学习 Kotlin 语言,才能追上技术发展趋势,在工作中更加游刃有余。 Kotlin 作为 Android 开发的新选择,具有简洁、安全、函数式编程等特点,在实际开发中使用起来非常方便。在使用 Kotlin 的专业 A.

qq_44102588的博客 3109

最全Android Kotlin 学习路线(Kotlin 从入门、进阶到实战)

Kotlin 是由 jetBrains 开发的一门现代多平台应用的静态编程语言,Kotlin 代码即可以编译成 Java 字节码,又可以编译成 JavaScript,Kotlin 是开源的,源码在这。Kotlin 包含了大量的语法糖,在编码的时候,会大大的简化我们的代码量及工作效率。且相比传统的 Java 语言,Kotlin 种大量的简写,可以减少很多用Java 必须要写的样板代码,减少大量的 if…else 等嵌套,减少大量接口的实现,代码结构也会更加清晰。

Eqiqi的博客 5867
上一篇: Kotlin入门-必会,属性篇
下一篇: Kotlin入门-程序员的福利,扩展篇
手艺人王学明
手艺人王学明 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄17年 441粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值