此代码中发生了什么?我想将输出显示为"打印数据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);
}
}
答案 0 :(得分:1)
为test 2类的name对象赋值。它会起作用。
public static void main(String[] args) {
test2.name = "ASD";
disp();
}
答案 1 :(得分:0)
否即可。如果不创建对象,则无法调用构造函数
除非您通过test2 = new test2();
创建test2的对象,否则您将获得null
名称。
如果它是静态的,你可以调用构造函数的唯一方法,但是constructors in Java can't be static.所以你创建了一个对象来调用构造函数。
答案 2 :(得分:0)
public class MainJava extends Test{
public static void main(String[] args){
//Option 1
disp();
//Option 2
name = "ABCD";
disp();
//Option 3
new Test();
disp();
}
}
class Test {
public static String name = "TEMP";
public Test() {
// Will not get called. Unless you create Object
name = "ASD";
}
public static void disp() {
System.out.println("Printing Data " + name);
}
}
答案 3 :(得分:0)
你根本不必调用父类的构造函数,
如果你的子类中你想要的只是name
类成员的初始化值,那么你可以一次执行声明+初始化,如下所示。
public static String name = "ASD";
上述风格一目了然地说明变量是如何初始化的,它也会打印预期的输出。
当然,如果初始化值在不同的构造函数中不同,则必须在构造函数中执行此操作。您可以在this article中阅读有关对象初始化的更多信息。