基础程序题

题目一

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 是静态的. 具体执行哪一个,则要看是由哪个类来调用的.

results matching ""

    No results matching ""