Kotlin中抽象类和开放类

抽象类 (Abstract Class)

  • 定义和特点
    抽象类使用 abstract 关键字声明,是一种不能被直接实例化的特殊类,主要用于被其他类继承。
abstract class Base {open fun f() {}
}abstract class Derived : Base() {override abstract fun f()  // 抽象成员在类中不存在具体实现
}
  • 主要特征:
  1. 不能直接实例化:抽象类只能被继承,不能创建实例
  2. 可以包含抽象成员:抽象成员使用 abstract 关键字标记,没有具体实现
  3. 无需open注解:抽象类或抽象成员不需要标注 open 注解,默认就可以被继承
  4. 可以包含具体实现:抽象类可以有具体的方法实现和属
  • 示例:
abstract class TestB {abstract fun bar()  // 抽象方法,子类必须实现
}

开放类 (Open Class)

  • 定义和特点
    开放类使用 open 关键字声明,是 Kotlin 中可以被继承的类。在 Kotlin 中,所有类默认是 final 的(不能被继承),需要显式使用 open 关键字才能被继承。

  • 主要特征:

    1. 可以被实例化:开放类可以创建实例
    2. 可以被继承:使用 open 关键字标记的类可以被其他类继承
    3. 方法默认是final:类中的方法默认不能被重写,需要使用 open 关键字标记才能被重写
    4. 支持方法重写:使用 open 关键字标记的方法可以在子类中被重写
  • 示例

open class TestC{open fun bar(){  // 使用open标记,可以在子类中重写// 默认实现}fun a(){  // 普通方法,不能被重写// 实现}
}

两者区别对比

特性抽象类 (Abstract Class开放类 (Open Class)
实例化❌ 不能直接实例化✅ 可以实例化
继承✅ 可以被继承✅ 可以被继承
抽象方法✅ 可以包含抽象方法❌ 不能包含抽象方法
具体实现✅ 可以包含具体实现✅ 可以包含具体实现
主要用途定义模板和契约提供可扩展的基础实现

在继承中的应用

abstract class Base {open fun f() {}
}abstract class Derived : Base() {override abstract fun f()  // 在抽象类中重新声明为抽象方法
}
open class Person(var name : String, var age : Int)  // 基类class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age)

实际应用建议

  1. 使用抽象类:当你需要定义一个基础模板,强制子类实现某些方法时
  2. 使用开放类:当你提供一个基础实现,同时允许子类根据需要扩展或修改行为时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96101.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow深度学习实战(37)——深度学习的数学原理

TensorFlow深度学习实战(37)——深度学习的数学原理0. 前言1. 反向传播历史2. 微积分相关概念2.1 向量2.2 导数和梯度2.3 梯度下降2.4 链式法则2.5 常用求导公式2.6 矩阵运算3. 激活函数4. 反向传播4.1 前向计算4.2 反向传播5. 交叉熵及其导数6. 批量梯度…

1.1 汽车运行滚动阻力

汽车运行阻力由4部分构成:滚动阻力、空气阻力、坡度阻力、加速阻力。 1).汽车在水平道路上等速行驶时,必须克服来自地面的滚动阻力和来自空气的空气阻力。 2). 当汽车在坡道上上坡行驶时,还必须克服重力沿坡道的分力,称为坡度阻…

e203000

1)①BIU作为核心通信枢纽,主要承担两大功能:一是连接处理器核内的关键执行单元(包括IFU、LSU和EAI协处理器),统一管理指令和数据的内部传输路径;二是作为"核内计算"与"核外资源&…

Infortrend普安科技IEC私有云平台VM解决方案

Infortrend企业云(IEC)内置Hypervisor运行VM。功能完整、无需额外付费。在本文中,我们将为您详细介绍IEC是如何支持 VM的。市场现状与挑战市场现状 虚拟化市场面临转型,主流厂商(如 VMware)改用订阅制…

【代码随想录算法训练营——Day6(Day5周日休息)】哈希表——242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和

LeetCode题目链接 https://leetcode.cn/problems/valid-anagram/ https://leetcode.cn/problems/intersection-of-two-arrays/ https://leetcode.cn/problems/happy-number/ https://leetcode.cn/problems/two-sum/ 题解 242.有效的字母异位词 这道题要想到用哈希表来做。同时注…

安科瑞基站智慧运维云平台:安全管控与节能降耗双效赋能

功能:基站智慧用电云平台通过对5G宏站和室分站点加装交/直流智能监控设备、无线采集设备以及系统管理平台,完成夜间无业务时段的下电操作,减少电能消耗,降低运营成本支出,以及提升通信设备供电线路状态的实时监测保护功…

处理省市区excel数据加工成SQL

原始数据相关内容链接 处理excel数据加工成SQL的脚本 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Excel行政区域数据转SQL脚本 - 支持特殊行政单位处理(如省直辖县级行政单位) - 支持批量处理 """import pand…

双碳目标下的24小时分时综合能源系统低碳优化调度:基于 Matlab/YALMIP/CPLEX的方法与仿真

在“双碳”战略目标的推动下,综合能源系统(Integrated Energy System, IES)已成为实现能源结构优化与碳排放控制的重要途径。本文以光伏、风电、燃气—电热联产(CHP)、燃气锅炉、电锅炉、电储能以及碳捕集(…

TDengine 选择函数 Last() 用户手册

LAST() 函数用户手册 函数定义 LAST(expr)功能说明 LAST() 函数统计表/超级表中某列的值最后写入的非 NULL 值,即返回时间戳最大的非 NULL 值。 版本要求 最低版本: v3.0.0.0 返回值 数据类型: 同应用的字段返回内容: 时间戳最大的非 NULL 值及其对应的时间戳…

< 自用文 学习 > 用 Claude Code 做一个日历

环境: OS: Windows 11 IDE:TREA Model: Sonnet / Qwen (免费 Token 用完) 参考: Claude Code Beginner Guide – Get Started in 20 Minutes (2025) by Alex Finn 油管博客 https://www.youtube.com/watch?viYiuzAsWnHU&listTLGG1L…

Gmail 数据泄露安全警报以及启示

目前,大规模数据泄露和针对性钓鱼攻击持续威胁着数十亿 Gmail 用户的安全,受ShinyHunters、UNC6040、UNC6395等威胁组织攻击,25 亿 Gmail 用户面临极大风险;攻击者已从暴力破解转向社会工程学与混合勒索,而密码复用、弱…

2024年6月GESPC++三级真题解析(含视频)

视频讲解:GESP2024年6月三级C真题讲解 一、单选题 第1题 解析: 答案C, 认证语言有C/C、Python、Scratch 第2题 解析: 答案B,判断闰年口诀“ 4闰 100不闰 400再闰 ” 第3题 解析: 答案C&#xff…

AiPPT生成的PPT内容质量怎么样?会不会出现逻辑混乱或数据错误?

作为一个每天要和 PPT 打交道的职场人,我用 AiPPT快一年了,从最初的 “试试看” 到现在的 “离不开”,最让我惊喜的就是它生成的 PPT 内容质量 —— 不仅逻辑清晰、数据专业,还能精准贴合不同场景需求,完全没遇到过逻辑…

DINOv3 新颖角度解释

1. Gram锚定(Gram Anchoring)的创新视角 新颖角度:oriane_simeoni(Meta AI研究人员)在X上分享了一个关于Gram锚定的深入线程,强调这一技术如何解决自监督学习中长期训练导致的特征图退化问题。 解释&#x…

【T2I】Discriminative Probing and Tuning for Text-to-Image Generation

paper:CVPR 2024 2403 https://arxiv.org/abs/2403.04321 code: https://github.com/LgQu/DPT-T2IAbstract 尽管文本到图像生成(T2I)取得了进展,但先前的方法往往面临文本 -图像对齐问题,例如生成图像中的关…

【CentOS7】使用yum安装出错,报HTTPS Error 404 - Not Found

【CentOS7】使用yum安装出错,报HTTPS Error 404 - Not Found问题描述解决办法博主有话说问题描述 在CentOS7中安装docker,切换了国内的镜像源进行yum安装,始终报如下错误:HTTPS Error 404 - Not Found 正在尝试其他镜像&#xff…

vulnhub:Kioptrix level 2

0x00、环境下载 链接:https://www.vulnhub.com/entry/kioptrix-level-11-2,23/ 0x01、前期准备 1.1、检查文件 hash值对比无误后解压 1.2、编辑虚拟机网卡 当不支持桥接时候,如练WiFi无无线网卡 方法1: 修改type为nat 方法2:将…

【CentOS7】docker安装成功后测试,报Unable to find image ‘hello-world:latest‘ locally

【CentOS7】docker安装成功测试,报Unable to find image hello-world:latest locally问题描述问题解决问题描述 根据大佬的博文【CentOS7】Linux安装Docker教程(保姆篇),以及结合之前的博文【CentOS7】使用yum安装出错&#xff0…

福彩双色球第2025104期篮球号码分析

明天是2025年9月9号星期二,深圳天气大雨。福彩双色球第2025104期篮球号码分析,上期开出篮球16,数字形式是1路球,合数偶数大号区域1字头数字。篮球1尾数01和11遗漏21期上次遗漏8期上上次遗漏7期,篮球3尾数03和13遗漏18期…

[手写系列]Go手写db — — 第三版(实现分组、排序、聚合函数等)

[手写系列]Go手写db — — 第三版第一版文章地址:https://blog.csdn.net/weixin_45565886/article/details/147839627 第二版文章地址:https://blog.csdn.net/weixin_45565886/article/details/150869791 🏠整体项目Github地址:ht…