先决条件—— 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) 编译错误
答案。 (d) 说明: 不能重写Final和static方法。有关更多详细信息,请查看: 我们能在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) 由于访问修饰符导致编译错误
答案: (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) 所有这些
答案。 (b) 说明: 重写方法引发的异常不应是新的或更广泛的已检查异常。在上面的代码中, 例外 是比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) 运行时错误
答案。 (a) 说明: 超级关键字 用于从子类显式调用重写的方法。
本文由 马扬克·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。