1.下面中哪两个可以在A的子类中使用:( )
class A {
protected int method1 (int a, int b) {
return 0;
}
}
A. public int method 1 (int a, int b) { return 0; }
B. private int method1 (int a, int b) { return 0; }
C. private int method1 (int a, long b) { return 0; }
D. public short method1 (int a, int b) { return 0; }
解答:AC
主要考查子类重写父类的方法的原则
B,子类重写父类的方法,访问权限不能降低
C,属于重载
D,子类重写父类的方法 返回值类型要相同或是父类方法返回值类型的子类
2.Abstract method cannot be static. True or False ?
A True
B False
解答:A
抽象方法可以在子类中被重写,但是静态方法不能在子类中被重写,静态方法和静态属性与对象是无关的,只与类有关,这与abstract是矛盾的,所以abstract是不能被修饰为static,否则就失去了abstract的意义了
3.What will be the output when you compile and execute the following program.
class Base
{
void test() {
System.out.println(“Base.test()”);
}
}
public class Child extends Base {
void test() {
System.out.println(“Child.test()”);
}
static public void main(String[] a) {
Child anObj = new Child();
Base baseObj = (Base)anObj;
baseObj.test();
}
}
Select most appropriate answer.
A Child.test()
Base.test()
B Base.test()
Child.test()
C Base.test()
D Child.test()
解答:D
测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类
的test方法,因此调用子类的test方法。
4.What will be the output when you compile and execute the following program.
class Base
{
static void test() {
System.out.println(“Base.test()”);
}
}
public class Child extends Base {
void test() {
System.out.println(“Child.test()”);
Base.test(); //Call the parent method
}
static public void main(String[] a) {
new Child().test();
}
}
Select most appropriate answer.
A Child.test()
Base.test()
B Child.test()
Child.test()
C Compilation error. Cannot override a static method by an instance method
D Runtime error. Cannot override a static method by an instance method
解答:C
静态方法不能在子类中被重写
原文:https://www.cnblogs.com/dingpeng9055/p/11850430.html