super()用于调用父构造函数吗? 请解释super()。
当前回答
来源文章:Java:调用super()
是的。Super(…)将调用超类的构造函数。
说明:
独立的例子:
class Animal {
public Animal(String arg) {
System.out.println("Constructing an animal: " + arg);
}
}
class Dog extends Animal {
public Dog() {
super("From Dog constructor");
System.out.println("Constructing a dog.");
}
}
public class Test {
public static void main(String[] a) {
new Dog();
}
}
打印:
Constructing an animal: From Dog constructor
Constructing a dog.
其他回答
Super()不带参数地调用父构造函数。
它也可以与参数一起使用。例如super(argument1),它将调用接受一个argument1类型形参的构造函数(如果存在的话)。
它还可以用于从父类调用方法。即super.aMethod ()
更多信息和教程在这里
我已经看到了所有的答案。但大家都忘了提一个非常重要的问题:
Super()应该在构造函数的第一行中调用或使用。
一些事实:
Super()用于调用直接父节点。 Super()可以用于实例成员,即实例变量和实例方法。 可以在构造函数中使用Super()来调用父类的构造函数。
好,现在让我们实际实现super()的这些点。
检查程序1和程序2之间的区别。这里,程序2证明了Java中super()的第一个语句。
程序1
class Base
{
int a = 100;
}
class Sup1 extends Base
{
int a = 200;
void Show()
{
System.out.println(a);
System.out.println(a);
}
public static void main(String[] args)
{
new Sup1().Show();
}
}
输出:
200 200
现在检查程序2,试着找出主要的区别。
项目2
class Base
{
int a = 100;
}
class Sup2 extends Base
{
int a = 200;
void Show()
{
System.out.println(super.a);
System.out.println(a);
}
public static void main(String[] args)
{
new Sup2().Show();
}
}
输出:
100 200
在程序1中,输出只是派生类。它既不能打印基类的变量,也不能打印父类的变量。但是在程序2中,我们在输出变量a时使用了super(),它打印的不是派生类变量a的值,而是基类变量a的值。因此,它证明了super()是用来调用直接父节点的。
好,现在看看程序3和程序4的区别。
项目3
class Base
{
int a = 100;
void Show()
{
System.out.println(a);
}
}
class Sup3 extends Base
{
int a = 200;
void Show()
{
System.out.println(a);
}
public static void Main(String[] args)
{
new Sup3().Show();
}
}
输出:
200
这里输出是200。当我们调用Show()时,派生类的Show()函数被调用。但是,如果我们想调用父类的Show()函数,应该怎么做呢?请查看程序4以获得解决方案。
项目4
class Base
{
int a = 100;
void Show()
{
System.out.println(a);
}
}
class Sup4 extends Base
{
int a = 200;
void Show()
{
super.Show();
System.out.println(a);
}
public static void Main(String[] args)
{
new Sup4().Show();
}
}
输出:
100 200
这里我们有两个输出,100和200。当调用派生类的Show()函数时,它首先调用父类的Show()函数,因为在派生类的Show()函数内部,我们通过将super关键字放在函数名之前调用父类的Show()函数。
The super keyword in Java is a reference variable that is used to refer to the immediate parent class object.
Java超级关键字的使用
Super可用于引用直接父类实例变量。 Super可用于调用直接父类方法。 Super()可用于调用直接父类构造函数。
例如,在selenium自动化中,你有一个PageObject,它可以像这样使用它的父类构造函数:
public class DeveloperSteps extends ScenarioSteps {
public DeveloperSteps(Pages pages) {
super(pages);
}........
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap