📜  Java程序的输出|第 18 组(覆盖)

📅  最后修改于: 2022-05-13 01:56:10.962000             🧑  作者: Mango

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 关键字用于显式调用子类中的重写方法。