public class MainJava 
{
    public static void main(String[] args)
    {
     SuperClass s=new SuperClass();
     System.out.println(s.getValue());
     System.out.println(s.getSum());
    }
}
abstract class SuperClass
{
private int i;
public SuperClass(){i=5;}
public int getValue(){return i;}
public abstract int getSum();
}
class SubClass extends SuperClass
{
int j;
public SubClass(){this(-3);}
public SubClass(int j){this.j=j;}
public int getValue(){return j;}
public int getSum(){return super.getValue()+j;}
}
这道程序应该没错吧,,。。呵呵。怎么就运行不了了?

解决方案 »

  1.   

    SuperClass s=new SuperClass();
    这句错了。应该是SuperClass s=new SubClass();
      

  2.   

    public class MainJava { 
        public static void main(String[] args){ 
    //SuperClass s=new SuperClass();
    //SuperClass 是抽象的;无法对其进行实例化
    SuperClass s=new SubClass();
    System.out.println(s.getValue()); 
    System.out.println(s.getSum()); 
        } 
    }abstract class SuperClass{ 
    private int i; 
    public SuperClass(){i=5;} 
    public int getValue(){return i;} 
    public abstract int getSum(); 
    } class SubClass extends SuperClass { 
    int j; 
    public SubClass(){this(-3);} 
    public SubClass(int j){this.j=j;} 
    public int getValue(){return j;} 
    public int getSum(){return super.getValue()+j;} 
      

  3.   

    SuperClass 这个类是abstract的,不能这样初始化·
      

  4.   

    SuperClass 这个类是abstract的,不能这样初始化,只能通过父类引用子类的方式来初始化,跟接口一样啊` 
    所以这里的初始化方式是SuperClass s=new SubClass();
      

  5.   

    LS以及LS的LS以及LS的LS的LS 以及LS的LS的LS的LS都是正确的