Java程序的输出|第 18 组(覆盖)
先决条件 - 在Java覆盖
1) 以下程序的输出是什么?
class Derived
{
protected final void getDetails()
{
System.out.println("Derived class");
}
}
public class Test extends Derived
{
protected final void getDetails()
{
System.out.println("Test class");
}
public static void main(String[] args)
{
Derived obj = new Derived();
obj.getDetails();
}
}
a) 派生类
b) 测试类
c) 运行时错误
d) 编译错误
答。 (四)
说明:最终和静态方法不能被覆盖。有关更多详细信息,请检查:我们可以重载或覆盖Java的静态方法吗?
2) 以下程序的输出是什么?
class Derived
{
public void getDetails(String temp)
{
System.out.println("Derived class " + temp);
}
}
public class Test extends Derived
{
public int getDetails(String temp)
{
System.out.println("Test class " + temp);
return 0;
}
public static void main(String[] args)
{
Test obj = new Test();
obj.getDetails("GFG");
}
}
a) 派生类 GFG
b) 测试类 GFG
c) 编译错误
d) 运行时错误
答。 (C)
说明:覆盖方法必须具有相同的签名,包括参数列表和返回类型。有关详细信息,请参阅: Java的覆盖
3) 以下程序的输出是什么?
class Derived
{
public void getDetails()
{
System.out.println("Derived class");
}
}
public class Test extends Derived
{
protected void getDetails()
{
System.out.println("Test class");
}
public static void main(String[] args)
{
Derived obj = new Test(); // line xyz
obj.getDetails();
}
}
a) 测试类
b) 由于行 xyz 导致的编译错误
c) 派生类
d) 由于访问修饰符导致的编译错误
答:(四)
说明:覆盖方法不能有更严格的访问修饰符。
4) 以下程序的输出是什么?
import java.io.IOException;
class Derived
{
public void getDetails() throws IOException //line 23
{
System.out.println("Derived class");
}
}
public class Test extends Derived
{
public void getDetails() throws Exception //line 24
{
System.out.println("Test class");
}
public static void main(String[] args) throws IOException //line 25
{
Derived obj = new Test();
obj.getDetails();
}
}
a) 由于第 23 行导致的编译错误
b) 第 24 行导致的编译错误
c) 第 25 行导致的编译错误
d) 以上所有
答。 (二)
说明:覆盖方法抛出的异常不应该是新的或更广泛的检查异常。在上面的代码中,Exception 是比 IOException 更广泛的检查异常类,因此这会导致编译错误。
5) 以下程序的输出是什么?
class Derived
{
public void getDetails()
{
System.out.printf("Derived class ");
}
}
public class Test extends Derived
{
public void getDetails()
{
System.out.printf("Test class ");
super.getDetails();
}
public static void main(String[] args)
{
Derived obj = new Test();
obj.getDetails();
}
}
a) 测试类派生类
b) 派生类测试类
c) 编译错误
d) 运行时错误
答。 (一种)
说明: super 关键字用于显式调用子类中的重写方法。