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
英文地址,請注明出處:http://en.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…