1、题1:
class ExSuper{ 
   String name; 
   String nick_name; 
   public ExSuper(String s,String t){ 
    name = s;
    nick_name = t; 
   } 
    public String toString(){ 
     return name; 
    } 
   } 
   public class Example extends ExSuper{ 
    public Example(String s,String t){ 
    super(s,t); 
    } 
    public String toString(){ 
     return name +"a.k.a"+nick_name;
    } 
    public static void main(String args[]){
     ExSuper a = new ExSuper("First","1st");
     ExSuper b = new Example("Second","2nd");
     System.out.println("a is"+a.toString());
     System.out.println("b is"+b.toString());
    }
  }答案是:a is First
    b is Secong a.k.a 2nd
这里是不是这样理解的:对子类的一个实例(ExSuper b = new Example("Second","2nd");),如果子类重写了父类的方法,则运行时系统调用子类的方法,
                     而一个父类的实例ExSuper a = new ExSuper("First","1st");就还是调用父类自己的方法。我选择的是:运行结果为:
        a is First a.k.a 1nd
        b is Second a.k.a 2nd
题二:
abstract class MineBase {
   abstract void amethod(); 
   static int i;
   }   public class Mine extends MineBase
  {
   public static void main(String argv[]){
    int[] ar = new int[5];
    for(i = 0;i < ar.length;i++)
    System.out.println(ar[i]);
   }
  }
答案:编译出错, Mine应声明为abstract。 
我选择的是: 打印5个0。
这个我就看不懂了。
下面是一些摘抄:
抽象类
   java语言中,用abstract 关键字来修饰一个类时,这个类叫做抽象类,用abstract 关键字来修饰一个方法时,这个方法叫做抽象方法。格式如下:
  abstract class abstractClass{ …} //抽象类
  abstract returnType abstractMethod([paramlist]) //抽象方法  抽象类必须被继承,抽象方法必须被重写。抽象方法只需声明,无需实现;抽象类不能被实例化,抽象类不一定要包含抽象方法。若类中包含了抽象方法,则该类必须被定义为抽象类。
大家能不能告诉我是错在那里啊?

解决方案 »

  1.   

    1。你的理解是对的
    2。抽象类被继承之后,则子类也继承父类的抽象方法,如果没有override的话,那么子类也是抽象类,你这里没有override,那么子类必须声明位abstract
      

  2.   

    你的意思是不是abstract void amethod(); 这个方法一定要override才行是吧,是不是只要继承了一个抽象类,里面的所有抽象方法一定都要override,如果没有,那么子类也要声明为抽象类?
      

  3.   

    抽象类之所以成为抽象类是因为它至少有一个抽象方法
    而子类继承父类必将继承父类的所有方法,包括抽象方法
    所以子类没有override父类的抽象方法(definition)的话,那么子类也是包含抽象方法的
    所以子类也只能声明为抽象类了