• 基础程序题

    基础程序题

    题目一

    1. class Base{}
    2. class Agg extends Base{
    3. public String getFields(){
    4. String name = "Agg";
    5. return name;
    6. }
    7. }
    8. public class Avf{
    9. pulic static void main(String argv[]){
    10. Base a = new Agg();
    11. //here
    12. }
    13. }

    下面哪个选项的代码替换到//here会调用getFields方法,使出书结果是Agg

    1. A. System.out.println(a.getFields());
    2. B. System.out.println(a.name);
    3. C. System.out.println((Base)a.getFields());
    4. D. System.out.println(((Agg)a).getFields());

    答案 D

    Base 类要引用 Agg 类的实例需要把 Base 类显示地转换成 Agg 类,然后调用 Agg 类中的方法. 如果 a 是 Base 类的一个实例,是不存在这个方法的,必须把 a 转换成 Agg 的一个实例

    题目二

    1. class A{
    2. public A(){
    3. System.out.println("A");
    4. }
    5. }
    6. public class B extends A{
    7. public B(){
    8. System.out.println("B");
    9. }
    10. public static void main(String[] args){
    11. A a = new B();
    12. a = new A();
    13. }
    14. }

    输出结果是 A B A

    题目三

    1. class A{
    2. public void print(){
    3. System.out.println("A");
    4. }
    5. }
    6. class B extends A{
    7. public void print(){
    8. System.out.println("B");
    9. }
    10. }
    11. public class Test{
    12. ..
    13. B objectB = new B();
    14. objectB.print();
    15. A as = (A) objectB;
    16. as.print();
    17. A asg = objectB;
    18. asg.print();
    19. as = new A();
    20. as.print();
    21. ..
    22. }

    输出为 B B B A

    题目四

    1. public class Test {
    2. public static void main(String[] args){
    3. Father father = new Father();
    4. Father child = new Child();
    5. System.out.println(father.getName());
    6. System.out.println(child.getName());
    7. }
    8. }
    9. class Father{
    10. public static String getName(){
    11. return "Father";
    12. }
    13. }
    14. class Child extends Father{
    15. public static String getName(){
    16. return "Child";
    17. }
    18. }

    输出是 Father Father 因为这里的方法 getName 是静态的. 具体执行哪一个,则要看是由哪个类来调用的.