35_面向对象_抽象类
抽象类
* 语法
* 抽象类
* abstract class 类名{}
* 抽象属性
* var|val id:Int //属性没有初始化,就是一个抽象属性
* 抽象方法
* def show //方法只有声明,没有实现,就是一个抽象方法
* 说明
* 1. 抽象方法不能直接 初始化(不能new对象)
* 2. 父类如果为抽象类,子类必须实现抽象类中的抽象属性和抽象方法
* 否则子类也必须声明为抽象类
* 3. 子类实现抽象父类的抽象属性,抽象属性 可以为 var|val
* 子类重写父类的非抽象属性,父类属性只能为val (父类定义的属性为公有属性,没必要重写)
* */
/** * @author gaocun * @create 2021-10-24 8:57 AM */ object 抽象类_09 { /* * 抽象类 * 语法 * 抽象类 * abstract class 类名{} * 抽象属性 * var|val id:Int //属性没有初始化,就是一个抽象属性 * 抽象方法 * def show //方法只有声明,没有实现,就是一个抽象方法 * 说明 * 1. 抽象方法不能直接 初始化(不能new对象) * 2. 父类如果为抽象类,子类必须实现抽象类中的抽象属性和抽象方法 * 否则子类也必须声明为抽象类 * 3. 子类实现抽象父类的抽象属性,抽象属性 可以为 var|val * 子类重写父类的非抽象属性,父类属性只能为val (父类定义的属性为公有属性,没必要重写) * */ } package OuterAbs { // 抽象类 abstract class AbsClass { // 抽象属性 var id:Int // 抽象方法 def show println("AbsClass - 主构造器") } // 继承抽象类 class ZiClass extends AbsClass { println("ZiClass - 主构造器") // 实现抽象类的抽象属性 override var id: Int = 10 override def show: Unit = println("实现抽象类的抽象方法") } // 测试对象 object testAbs { def main(args: Array[String]): Unit = { // 抽象类不能被直接初始化 //new AbsClass(); var obj = new ZiClass(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界