这段代码中发生了什么?我想在不调用构造函数的情况下将输出显示为“Printing data ASD”。
子类:
package com.javatraining;
public class test1 extends test2{
public static void main(String[] args) {
disp();
}
}
父类:
package com.javatraining;
public class test2
{
public static String name;
public test2(){
name="ASD";
}
public static void disp(){
//test2 t=new test2();
System.out.println("Printing data "+name);
}
}
5条答案
按热度按时间6kkfgxo01#
给test 2类的name对象赋值。会成功的
67up9zun2#
kx7yvsdv3#
否,不创建对象就不能调用构造函数。
除非你通过
test2 = new test2();
创建test2的对象,否则你将在name中获得null
。如果构造函数是静态的,那么你调用它的唯一方法,但是constructors in Java can't be static.所以你必须创建一个对象来调用构造函数。
xa9qqrwz4#
你根本不需要调用父类的构造函数,如果你想要在子类中初始化
name
类成员的值,那么你可以像下面这样一步完成声明+初始化。上面的样式让我们一目了然地看到变量是如何初始化的,它还将打印出预期的输出。
当然,如果不同构造函数中的初始化值不同,则必须在构造函数中进行。你可以在this article中阅读更多关于对象初始化的内容。
9w11ddsr5#
不,如果没有创建对象,我们就不能调用构造函数