java关于超级关键字?
JVM调用超类构造函数需要什么
public class Test1{
public void dis()
{
System.out.println("In Test1");
}
}
public class Test2 extends Test1{
public void dis()
{
System.out.println("Inside test2");
super.dis();
}
}
既然dis()
是一个实例方法,那么可以安全地假设super指向父类对象,因为构造函数是自动调用的吗
# 1 楼答案
super
关键字可用于:您的示例显示了第一种情况,在对
Test2
实例调用dis()
时,程序必须按以下顺序打印:# 2 楼答案
使用超级构造函数,我们可以直接从
调用函数和变量 子类中的超类
# 3 楼答案
super
关键字用于访问当前对象上的直接超类成员。它不引用任何超类对象super
关键字的角色不依赖于被调用的超类构造函数。超级类构造函数总是通过构造函数链接调用,使用super()
调用no-arg或参数化构造函数链接超类构造函数和调用超类成员之间的一个区别是:“链接构造函数时,
super()
调用必须是构造函数中的第一条语句,而您可以在当前方法中的任何点调用超类方法”# 4 楼答案
关键字
super
没有指向某个“父类对象”。它是一个名称限定符,因此您可以引用父类中为当前对象定义的方法。因此,在以下方面:调用
super.dis()
调用在父类中为此对象定义的dis()
方法。它不会调用其他名为super
的对象的dis()
方法构造器的情况略有不同。每个构造函数必须始终以调用父类中的某个构造函数开始。可以使用
super
关键字显式执行此操作:如果没有显式调用特定的父类构造函数,编译器会自动插入对默认(无参数)父类构造函数的调用。对父类构造函数(如果存在)的调用必须是构造函数中的第一条语句。但是,在一个方法中,
super.
可以用作任何名称的限定符(只要该名称是父类的成员)# 5 楼答案
这与构造函数无关。由于在这两个类中都实现了
Test2 extends Test1
和dis(),因此超级。子类中的dis()将调用超类中的dis()