[Kotlin] Class / Abstract class / Example
interface Lendable { fun borrow() } // The properties title, genre, and publicationYear can be included in the parent class because both books and DVDs // have these properties. The author and length properties however are included only in the child classes. abstract class InventoryItem(val title: String, val genre: String, var publicationYear: Int, var borrowed: Boolean) : Lendable { override fun borrow() { if (!borrowed) { borrowed = true } else { println("This item is already borrowed.") } } // If you want, you can also add a returnItem() method so that you can also un-borrow items. override fun toString(): String { return "InventoryItem(title='$title', genre='$genre', publicationYear=$publicationYear, borrowed=$borrowed)" } abstract fun copy(): InventoryItem } // A book will be not borrowed by default. // The class is called LibraryBook to prevent name clashes with previous challenges. class LibraryBook(title: String, val author: String, genre: String, publicationYear: Int) : InventoryItem(title, genre, publicationYear, false) { fun read() { println("Reading a book by $author...") } override fun copy(): InventoryItem { val copy = LibraryBook(title, author, genre, publicationYear) copy.borrowed = this.borrowed return copy } } // A DVD will also be not borrowed by default. class LibraryDVD(title: String, genre: String, val length: Int, publicationYear: Int) : InventoryItem(title, genre, publicationYear, false) { fun watch() { println("Watching $title...") } override fun copy(): InventoryItem { val copy = LibraryDVD(title, genre, length, publicationYear) copy.borrowed = this.borrowed return copy } }
分类:
Kotlin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-10-12 [Bash] Move and Copy Files and Folders with Bash
2018-10-12 [Bash] Create nested folder in Bash
2018-10-12 [Bash] View Files and Folders in Bash
2017-10-12 [Express] Upload Files with Express
2017-10-12 [Python] List & Object spread in Python
2017-10-12 [Angular & Unit Testing] Testing a RouterOutlet component
2016-10-12 [Debug] Use Snippets to Store Behaviors in Chrome DevTools