Kotlin - 抽象类 abstract、接口 interface

Kotlin基础——类、对象和接口 kotlin中同样使用interface关键字来定义接口,接口的含义和Java中类似,用于定义抽象使用interface关键字定义接口。实现一个接口跟Java中不同,Kotlin中继承类和实现接口都是使用冒号。重写接口中的方法,使用override关键字,与Java中不同的是,override是必须写的,如果不写则会报错。这会避免先写出实现方法再添加抽象方法造成的意外重写。和Java一样,Kotlin中的类只能继承一个类,但可以实现多个方法。 阅读详情

抽象类

  • 抽象类使用 abstract 关键字,无须再用 open 修饰。
  • 抽象属性和抽象函数也使用 abstract 关键字无需 open 修饰,只有声明而没有具体实现,子类必须全部重写。可以有普通属性和普通函数。
  • 抽象类能有构造但不能直接实例化,需要靠子类向上转型的形式创建。其它和普通类一样。
  • 子类可以用抽象方法覆盖父类中非抽象的方法。
//声明抽象类
abstract class Demo {
    //抽象属性
    abstract var id:Long
    //抽象方法
    abstract fun show():Int
    abstract fun method()   //不声明返回值默认是Unit
}

//子类继承后需要重写抽象成员
class Haha : Demo() {
    override var id: Long
        get() = TODO("Not yet implemented")
        set(value) {}

    override fun show(): Int {
        TODO("Not yet implemented")
    }

    override fun method() {
        TODO("Not yet implemented")
    }
}

//通过子类向上转型的形式创建实例
main{
        var aa:Demo = Haha()
}

接口

  • 接口使用 interface 关键字,无须再用 open 修饰。抽象属性和抽象方法默认是 abstract 的可以不写,只有声明而没有具体实现,子类必须全部重写带有 abstract 修饰的抽象成员。
  • 可以有属性,要么是抽象的,要么是val带getter。不能有幕后字段因此不支持var带setter。(Java接口中只能定义常量,不支持属性)。
  • 可以有普通方法(Java8接口中的default方法,实现类可以调用,不能通过接口名调用)。
  • 可以有私有方法(java9接口中的私有方法,只能在接口中调用,实现类不能调用,不能通过接口名调用)。
  • 可以通过伴生对象提供函数和常量(Java8接口中的静态方法)。
interface Demo {
    //抽象属性,默认是 public abstract
    var id: Long
    //抽象方法,默认是 public abstract
    fun show()
    //能有提供setter的val属性
    val name: String
        get() = ""
    //能有具体实现的普通函数,实现类可以调用
    fun method() = println("Hello World!")
    //能有私有函数,只能在该接口中调用
    private fun method() {}
    //能有伴生对象,可通过接口名调用
    companion object {
        //使用private修饰就只能在该接口中被调用
        var aa = 3
        const val bb = ""
        fun cc(){}
    }
}

class Haha:Demo{
    override var id: Long
        get() = TODO("Not yet implemented")
        set(value) {}

    override fun show() {
        TODO("Not yet implemented")
    }
}

银河麒麟V10安装docker 最近在做的一个信创项目使用的操作系统是银河麒麟高级服务器V10,在安装docker时,会遇到下面的错误。 nothing provides fuse-overlayfs >= 0.7 needed by docker-ce-rootless-extras-20.10.0-3.el7.x86_64 经过分析,以下依赖包是centos系统中的包,所以需要给kylinos创建一个合适的centos源。经过实验,Kylin Linux Advanced Server V1 阅读详情

相关推荐

避开SiC MOSFET驱动设计的3个大坑:电流/电阻/电压配置全指南

本文深入解析SiC MOSFET驱动设计中的三大关键参数:驱动电流、栅极电阻和工作电压,揭示常见设计误区与优化方案。通过实际案例与数据对比,指导工程师避开第三代电力电子半导体应用中的典型陷阱,提升系统可靠性与效率。特别针对驱动电源配置、栅极电阻选型等核心问题提供可落地的解决方案。

weixin_29214199的博客 382

kotlin的接口详解

在 Kotlin 中,接口(Interface)是一种定义了一组方法的抽象类型。与类不同,接口不能包含状态或字段。接口中的方法可以有默认实现,也可以是抽象的需要在实现类中提供具体实现的方法。

liulanba的博客 1960

Ubuntu 22.04源码编译安装ROS Noetic

Ubuntu 22.04源码编译安装ROS Noetic

Drknown的博客 2万+

kotlin-接口

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

qq_55888300的博客 3762

GEE APP:时间序列影像批处理工具:按月筛选与智能导出解决方案出工具

本文介绍了一个基于Google Earth Engine(GEE)开发的智能时序影像处理工具,可高效处理遥感影像时间序列数据。该工具采用三栏式交互布局,包含控制面板、地图显示和缩略图预览区域。核心功能包括:1)灵活的时间筛选机制,支持年度范围选择和月份批量选择;2)智能影像筛选算法,基于云量、空间覆盖等条件自动选择最佳影像;3)交互式缩略图预览,支持点击加载完整影像;4)自动化批量导出系统,实现标准化命名和统一存储。工具可广泛应用于农业监测、城市扩张研究、生态环境评估等领域,显著提高遥感数据预处理效率,确保

此星光明博客 111

芒果YOLO11改进176:2025最新顶会论文|尺度动态损失函数Scale-based Dynamic Loss,即插即用|以减少标签不准确对损失函数稳定性的影响

芒果YOLO11改进186:2025最新顶会论文|尺度动态损失函数Scale-based Dynamic Loss,即插即用|以减少标签不准确对损失函数稳定性的影响

包括YOLOv5、YOLOv7、YOLOv8等模型改进 2126

Kotlin中interface关键字

在 Kotlin 中,interface 关键字用于定义接口。接口是一种用来描述类的行为或能力的抽象集合。它可以包含抽象方法(没有实现的方法),也可以包含实现的方法。与类不同,接口不能存储状态(即没有字段),但它可以定义属性(可以有 getter 和 setter)。1. 定义接口在 Kotlin 中,接口的定义与类的定义...

weixin_33329305的博客 467

【量化入门】Tushare库获取公募基金的历史净值

在本文中,我们将介绍如何使用Python的Tushare库获取公募基金的历史净值。

木头大左的博客 1138

kotlin的抽象类和抽象方法

在 Kotlin 中,抽象类和抽象方法是面向对象编程中的概念,用于实现抽象和多态性。每个模块可以由抽象类定义,并由具体的子类实现,从而实现更容易理解和维护的代码结构。代码复用: 抽象类可以包含一些通用的实现,子类可以继承这些实现并提供自己的具体实现。抽象性: 抽象类和抽象方法允许我们表示一种抽象的概念,而不涉及具体的实现细节。通过继承抽象类并提供具体实现,可以在运行时使用不同的对象,实现相同的抽象操作。在抽象类中,至少有一个抽象方法。继承抽象类: 创建一个子类,继承抽象类,并提供抽象方法的具体实现。

liulanba的博客 1434

iOS安全和逆向系列教程 第18篇:iOS应用脱壳技术详解与实战

iOS应用脱壳技术详解与实战 摘要: 本文深入剖析了iOS应用脱壳技术,首先解释了加壳(如FairPlay DRM)与脱壳的基本概念及必要性。通过otool命令可以检测应用的加密状态。文章详细介绍了三种主流脱壳工具:经典dumpdecrypted工具的使用方法、现代化Clutch工具的安装配置以及基于Frida的高级脱壳方案frida-ios-dump。针对特殊情况,还提供了使用LLDB手动dump内存的技术细节,包括查找基地址、计算dump范围和内存读取等操作。最后介绍了修复Mach-O文件头的Pytho

一个自学不成材的程序员 710

【ESP32摄像头开发实例】-视频流接入Home Assistant

在这个项目中,我们将使用ESP32-CAM板构建一个IP监控摄像头。ESP32摄像头将托管一个视频流媒体网络服务器,您可以使用网络中的任何设备进行访问。

视觉与物联智能 788

kotlin的abstract抽象类与interface接口建模按钮android点击事件处理

kotlin的abstract抽象类与interface接口建模按钮android点击事件处理。

Zhang Phil 324

Python爬虫实战:爬取小红书数据做爆款分析,我破解了签名加密+移动端反爬(附完整代码)

爬取小红书数据的核心,不是“简单的HTTP请求”,而是“理解移动端接口的加密逻辑和反爬规则”——从x-s/x-t签名破解到移动端UA伪装,再到行为模拟,每一步都是对移动端爬虫的深度理解。这套方案的价值在于,不仅能稳定抓取小红书数据,还能从数据中拆解出有价值的爆款特征,真正把“数据”变成“洞察”。对程序员来说,小红书爬虫不仅是技术练手,更是了解新媒体平台数据逻辑的窗口。希望这篇分享能帮到做新媒体分析或爬虫进阶的小伙伴,也欢迎在评论区交流小红书反爬和爆款分析的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2056

kotlin class interface和 abstract的使用

8 kotlin之interface和 abstract的使用 interface IDatabase { fun connect() fun close() } abstract class Database(databaseName: String) : IDatabase { val databaseName: String = databaseName var connectString: String = "" fun showInfo() {

仰望星空 477

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Kt学习笔记(七)接口、抽象类

文章目录一、接口二、抽象类 一、接口 kt中的接口和Java中的接口类似,使用interface关键字声明,一个类可以实现多个借口,实现的方法和类继承相同,而且,接口中的属性和方法都是open的 /** * 定义MyInterface接口 */ interface MyInterface { fun process() fun getName() : String ...

qi85481455的博客 978

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

kotlin基础5---面向对象抽象类和接口的不同

接口: package android.zhh.com.jiekou /** * 接口 */ interface Iman{ fun yifu(); } 抽象类: package android.zhh.com.jiekou /** * Created by 16838 on 2017/12/27. * 抽象类 * 抽象方法 */ abstract class Am

翟浩浩Android专栏 259

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kotlin学习4.5:抽象类和接口

Kotlin学习4.5:抽象类和接口抽象类接口 抽象类 在定义一个类时,通常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。 因此,可以将其定义为抽象方法,抽象方法使用关键字 abstract 修饰,该方法没有方法体,在使用时需要实现其方法体,当一个类中包含了抽象方法,该类必须使用关键字abstract 定义为抽象类。 语法格式如下: abstract class...

qq_43233085的博客 229

HoRain云--接口 (interface) 和 抽象类 (abstract class) 有什么区别?

接口(interface)和抽象类(abstract class)是面向对象编程中实现抽象的核心机制,它们在设计理念、语法规则和应用场景上有显著差异。以下是综合多篇权威资料的对比分析:

2401_86544677的博客 805

京东·Android 面试——接口和抽象类的区别

对比抽象类和接口在Android/Java中的语法和设计意图,强调is-a vs can-do,并用BaseActivity和OnClickListener例子说明选择。注意字数限制。</think>本文以京东面试题切入,对比抽象类与接口的语法差异(含Java8/9演进)、设计意图(is-a vs can-do),结合BaseActivity与OnClickListener等Android实例,给出决策口诀:要状态/构造/模板用抽象类,要能力/多实现用接口。

606

Kotlin接口的多继承实现与设计实践

在面向对象编程中,接口是实现多态和代码复用的核心机制。Kotlin通过支持带默认实现的接口方法,巧妙地解决了传统单继承语言的局限性。这种设计既保留了接口的轻量级特性,又通过super<T>语法明确处理了菱形继承问题,为开发者提供了更灵活的多继承方案。从性能优化角度看,接口属性委托和lazy初始化能有效解决重复计算问题。在实际工程中,合理运用接口与抽象类的互补特性,结合Kotlin特有的SAM转换和类委托等特性,可以构建出既清晰又高效的代码架构。特别是在Android开发和微服务架构中,Kotlin接口的多继

weixin_34006965的博客 290

Kotlin接口设计原理与多继承实践指南

接口作为面向对象编程的核心概念,定义了对象间的行为契约。Kotlin通过支持默认方法实现和属性声明,使接口同时具备抽象定义与代码复用能力,有效解决了传统单继承语言的局限性。其显式的多继承冲突解决机制(super<T>语法)比Java默认方法更安全直观,配合委托模式能实现优雅的策略模式与装饰器模式。在移动开发领域,Kotlin接口结合SAM转换简化了回调机制,与Flow的集成则提升了异步数据处理能力。理解接口与抽象类的状态存储差异(字段支持)及初始化特性(构造函数与init块),是进行Android架构设计的

weixin_33946605的博客 347

【Kotlin系列06】面向对象进阶:从接口到多态,设计灵活可扩展的代码

深入探讨Kotlin面向对象编程的高级特性,从接口、抽象类到多态,学习如何设计灵活、可扩展、易维护的代码架构

Cheson的专栏 872

Kotlin的学习日志(三)class construcor,interface,abstract class

如果有错误的地方,多谢指出/** * Created by Gray on 2017/5/28. */ /* kotlin中的类的关键字是class 由类名,类头(类型参数,主构造函数等)和类体组成,如果class没有身体,可以省略花括号 clasa A class中可以有一个主构造函数或者一个或多个辅助构造函数

wagg1993323的博客 1425

Kotlin类继承语法与最佳实践详解

面向对象编程中的继承机制是实现代码复用的核心技术,Kotlin通过独特的语法设计提升了类型安全性。与Java不同,Kotlin默认所有类都是final的,必须显式使用open关键字才能被继承,这种设计有效避免了脆弱基类问题。方法重写必须使用override关键字明确标记,属性重写则遵循val/var的特定规则。在实际工程中,合理运用密封类(sealed class)可以构建类型安全的代数数据类型,而类委托机制则提供了比多重继承更灵活的解决方案。掌握Kotlin的继承特性对于Android开发和后端服务构建都

weixin_30915275的博客 373

第06篇-继承-接口与多态

Kotlin 继承、接口与多态摘要 本文是 Kotlin + Spring Boot 系列第 6 篇,主要讲解 Kotlin 面向对象编程的核心概念: 继承机制 类默认 final,需用 open 显式允许继承 方法重写需 open/override 关键字 通过 super 调用父类实现 抽象类 用 abstract 修饰,不能实例化 可包含抽象方法(子类必须实现) 与 open 类的关键区别:抽象类强制实现 接口与多态 支持多接口实现 接口可包含默认方法实现 通过多态实现灵活的类型系统 特殊类型 智能转

liumingxiy的博客 265

[Kotlin]Kotlin学习笔记(四):类与对象、泛型详解

主要内容包括,类定义、类属性、backing field(后端变量)、泛型、继承、接口、方法重写、getter与setter、类型协变、类型投射、泛型约束

身披白袍的博客 1409
上一篇: Kotlin - 继承 open、override
下一篇: Kotlin - 内部类、嵌套类、局部类 class
Jomurphys
博客等级 码龄9年 1768粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值