33_面向对象_继承
继承
* 语法
* class 子类名称(参数列表) extends 父类名称(参数列表) {}
* 说明
* 父类名称(参数列表) 决定着 父类使用哪种构造器对父类进行初始化
* 说明
* 1. 子类继承父类的 属性 和 方法 (子类及子类对象中不用声明,可以直接用)
* 2. scala是单继承
* 3. 子类创建对象时,父类及上基类都会被初始化
* 父类 主构造器带参数,那么子类也必须带参数
* 示例 ZiClass初始化 上游 FuClass 、YeClass 都会被初始化
重写
* java中只能重新方法
* scala可以重新方法和属性
* 说明
* 1. 父类的var属性无法被重写(抽象类的抽象属性除外) (父类属性为公共属性,没有必须要重写,可以直接使用)
* 父类的val属性可以被重写
* */
package com.dawang.scala.面向对象 /** * @author gaocun * @create 2021-10-23 10:01 AM */ object 继承_07 { /* * 继承 * 语法 * class 子类名称(参数列表) extends 父类名称(参数列表) {} * 说明 * 父类名称(参数列表) 决定着 父类使用哪种构造器对父类进行初始化 * 说明 * 1. 子类继承父类的 属性 和 方法 (子类及子类对象中不用声明,可以直接用) * 2. scala是单继承 * 3. 子类创建对象时,父类及上基类都会被初始化 * 父类 主构造器带参数,那么子类也必须带参数 * 示例 ZiClass初始化 上游 FuClass 、YeClass 都会被初始化 * 重写 * java中只能重新方法 * scala可以重新方法和属性 * 说明 * 1. 父类的var属性无法被重写(抽象类的抽象属性除外) (父类属性为公共属性,没有必须要重写,可以直接使用) * 父类的val属性可以被重写 * */ } package Outer { class YeClass() { var name: String = "YeClass" println("YeClass - 主构造器调用") def show = println("YeClass - show方法") } class FuClass(var id: Int) extends YeClass { name = "FuClass" var age = 10 val sex = 1 // 辅助构造器 def this(id: Int, name: String) = { this(10) // 调用主助构造器 this.id = id this.name = name println("FuClass - 辅助构造器 调用") } override def show = println("FuClass 的show方法") println("FuClass - 主构造器调用") } class ZiClass(id: Int, name1:String) extends FuClass(id,name1) { name = "ZiClass" // 重写父类属性 age = 100 override val sex = 0 println("ZiClass - 主构造器调用") } // 测试对象 object test { def main(args: Array[String]): Unit = { val obj = new ZiClass(10,"大王") println(obj.id) println(obj.name) obj.show } } }
Java-继承
import java.sql.SQLOutput; /** * @author gaocun * @create 2021-10-23 9:05 AM */ public class Persion { int id; String name; Persion(int id, String name) { System.out.println("Persion - 含参构造"); } } class Zi extends Persion { int id; String name; Zi(int id, String name) { super(id, name); } } /* * 当父类只有无参数构造,子类可以使用默认的构造器(默认调super()) * 当父类只有带参数构造,子类必须使用带参构造,并手动调用super(属性) * */ class Test { public static void main(String[] args) { System.out.println("aaa"); new Persion(10, "大王"); //new Persion(); } }
【推荐】国内首个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带你走进微服务的世界