开发者学堂课程【Scala 核心编程-基础:Java 的超类构造分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8973
Java 的超类构造分析
一、Scala 中超类的构造
1.回顾-Java 中超类的构造
(1)超类:
可以说是父类或者父类的父类,由于超类的构造也是由于继承导致的,所以有的时候会看到超类的一些概念。
(2)说明:
从代码可以看出:在 Java 中,创建子类对象时,子类的构造器总是去调用一个父类的构造器(显式或者隐式调用)。
代码:
package com.atguigu.chapter07.myextends ;
public class ]avaBaseconstractor {(关于java的一个机制)
public static void main(string[] args){
/ /1.A()
/ /2.B()
B b = new B();
//1.A(String name) jack
//2.B( String name) jack
B b2 =new B( name: "jack" );
class A
{
(这里有一个 A 类,并且有两个构造器,这里写的原因是 scale 对父类的构造有自己的特色)
publicA()
{
Super()
这里也隐藏一个父类是 object 的
System.out.print
l
n(""A
(
)"");}
}
public A(String name){
System.out.println("A[String name)""+ name);)
}
class B extends
A
{
(这里 B 继承了 A,此时先优先输出上面的 A,在输出这句话)
public B()
{
//这里会隐式调用 super();就是无参的父类构造器A()
//super()
System.out.printin("B
()
"");
(当在 B 里没有写任何调用父类构造器时默认调用的是 super)
}
public B(String name) {
(在这里显示调用参数 A 的构造器,这里可显示可不显示)
super(name);
system.out.println("B(String name)"+ name);
}
}
这里发现 scala 里面没有那么灵活,如果子类想调用父类的构造器是必须的但是出口只有一个。
输出的内容:
//1.A
()
/
/2.B
()
B
b = new B
()
;
/
/1.A(String name)jack
//2.B(String name)jack
B
b2 = new B("jack"");