Java程序的输出 |第 14 组(构造函数)
先决条件 - Java构造函数
1)以下程序的输出是什么?
class Helper
{
private int data;
private Helper()
{
data = 5;
}
}
public class Test
{
public static void main(String[] args)
{
Helper help = new Helper();
System.out.println(help.data);
}
}
a) 编译错误
b) 5
c) 运行时错误
d) 这些都不是
答。 (一种)
说明:私有构造函数不能用于在定义它的类之外初始化对象,因为它不再对外部类可见。
2) 以下程序的输出是什么?
public class Test implements Runnable
{
public void run()
{
System.out.printf(" Thread's running ");
}
try
{
public Test()
{
Thread.sleep(5000);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
public static void main(String[] args)
{
Test obj = new Test();
Thread thread = new Thread(obj);
thread.start();
System.out.printf(" GFG ");
}
}
a) GFG 线程正在运行
b) 线程运行的 GFG
c) 编译错误
d) 运行时错误
答。 (C)
说明:构造函数不能包含在 try/catch 块中。
3) 以下程序的输出是什么?
class Temp
{
private Temp(int data)
{
System.out.printf(" Constructor called ");
}
protected static Temp create(int data)
{
Temp obj = new Temp(data);
return obj;
}
public void myMethod()
{
System.out.printf(" Method called ");
}
}
public class Test
{
public static void main(String[] args)
{
Temp obj = Temp.create(20);
obj.myMethod();
}
}
a) 构造函数调用 方法调用
b) 编译错误
c) 运行时错误
d) 以上都不是
答。 (一种)
说明:当构造函数被标记为私有时,从某个外部类创建该类的新对象的唯一方法是使用创建新对象的方法,如上面程序中定义的那样。 create() 方法负责从其他外部类创建 Temp 对象。一旦创建了对象,就可以从创建对象的类中调用它的方法。
4) 以下程序的输出是什么?
public class Test
{
public Test()
{
System.out.printf("1");
new Test(10);
System.out.printf("5");
}
public Test(int temp)
{
System.out.printf("2");
new Test(10, 20);
System.out.printf("4");
}
public Test(int data, int temp)
{
System.out.printf("3");
}
public static void main(String[] args)
{
Test obj = new Test();
}
}
一)12345
b) 编译错误
c) 15
d) 运行时错误
答。 (一种)
说明:构造函数可以被链接和重载。当调用 Test() 时,它会创建另一个调用构造函数 Test(int temp) 的 Test 对象。
5) 以下程序的输出是什么?
class Base
{
public static String s = " Super Class ";
public Base()
{
System.out.printf("1");
}
}
public class Derived extends Base
{
public Derived()
{
System.out.printf("2");
super();
}
public static void main(String[] args)
{
Derived obj = new Derived();
System.out.printf(s);
}
}