继承
* 语法
* class 子类名称(参数列表) extends 父类名称(参数列表) {}
* 说明
* 父类名称(参数列表) 决定着 父类使用哪种构造器对父类进行初始化
* 说明
* 1. 子类继承父类的 属性 和 方法 (子类及子类对象中不用声明,可以直接用)
* 2. scala是单继承
* 3. 子类创建对象时,父类及上基类都会被初始化
* 父类 主构造器带参数,那么子类也必须带参数
* 示例 ZiClass初始化 上游 FuClass 、YeClass 都会被初始化
* */
package com.dawang.scala.面向对象 /** * @author gaocun * @create 2021-10-23 10:01 AM */ object 继承_07 { /* * 继承 * 语法 * class 子类名称(参数列表) extends 父类名称(参数列表) {} * 说明 * 父类名称(参数列表) 决定着 父类使用哪种构造器对父类进行初始化 * 说明 * 1. 子类继承父类的 属性 和 方法 (子类及子类对象中不用声明,可以直接用) * 2. scala是单继承 * 3. 子类创建对象时,父类及上基类都会被初始化 * 父类 主构造器带参数,那么子类也必须带参数 * 示例 ZiClass初始化 上游 FuClass 、YeClass 都会被初始化 * */ } package Outer { class YeClass() { var name: String = "YeClass" println("YeClass - 主构造器调用") def show = println("YeClass - show方法") } class FuClass(var id: Int) extends YeClass { name = "FuClass" // 辅助构造器 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" 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(); } }