难度级别: 简单
程序
程序一
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) 编译错误
程序二
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("HY"); } }
a) Derived class HY
b) Test class HY
c) Compilation error
d) Runtime error
程序三
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) Test class
b) Compilation error due to line xyz
c) Derived class
d) Compilation error due to access modifier
程序四
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) 以上所有
程序五
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) Test class Derived class
b) Derived class Test class
c) 编译错误
d) 运行时错误
文章后半部分是程序的输出及解析
输出及解析
程序一输出
答案:
(d)
说明:
final 和static 方法不能被重写。
程序二输出
答案:
(c)
说明:
重写方法必须具有相同的签名,包括参数列表和返回类型
程序三输出
答案:
(d)
说明:
重写方法不能有更严格的访问修饰符
程序四答案
回答 :
(b)
说明:
覆盖方法抛出的异常不应是新的或更广泛的检查异常。在上面的代码中,Exception是比 IOException 更广泛的检查异常类,因此这会导致编译错误。
程序五答案
回答 :
(a)
说明:
super 关键字用于显式调用子类的重写方法。
以上就是本篇文章的所有内容了