基础程序题

题目一

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