- 基础程序题
基础程序题
题目一
class Base{}class Agg extends Base{public String getFields(){String name = "Agg";return name;}}public class Avf{pulic static void main(String argv[]){Base a = new Agg();//here}}
下面哪个选项的代码替换到//here会调用getFields方法,使出书结果是Agg
A. System.out.println(a.getFields());B. System.out.println(a.name);C. System.out.println((Base)a.getFields());D. System.out.println(((Agg)a).getFields());
答案 D
Base 类要引用 Agg 类的实例需要把 Base 类显示地转换成 Agg 类,然后调用 Agg 类中的方法. 如果 a 是 Base 类的一个实例,是不存在这个方法的,必须把 a 转换成 Agg 的一个实例
题目二
class A{public A(){System.out.println("A");}}public class B extends A{public B(){System.out.println("B");}public static void main(String[] args){A a = new B();a = new A();}}
输出结果是 A B A
题目三
class A{public void print(){System.out.println("A");}}class B extends A{public void print(){System.out.println("B");}}public class Test{..B objectB = new B();objectB.print();A as = (A) objectB;as.print();A asg = objectB;asg.print();as = new A();as.print();..}
输出为 B B B A
题目四
public class Test {public static void main(String[] args){Father father = new Father();Father child = new Child();System.out.println(father.getName());System.out.println(child.getName());}}class Father{public static String getName(){return "Father";}}class Child extends Father{public static String getName(){return "Child";}}
输出是 Father Father 因为这里的方法 getName 是静态的. 具体执行哪一个,则要看是由哪个类来调用的.
