abstract class Sudu_fl
{
private int zhuansu;

public Sudu_fl(){}
public abstract  double getbanjing(double banjing);

public void setzhuansu(int zhuansu)
{
this.zhuansu=zhuansu;

public double sudu_car()
{
return java.lang.Math.PI*2* getbanjing() *zhuansu;
}
}
public class Sudu_zl extends Sudu_fl
{
public double getbanjing(double banjing)
{
return 0.28;
}
public static void main(String[]args){
  Sudu_zl sz=new Sudu_zl();
  sz.setzhuansu(15);
 // sz.getbanjing(0.28);
    sz.sudu_car();
    System.out.println(sz.sudu_car());
}


}

解决方案 »

  1.   

    return java.lang.Math.PI*2* getbanjing() *zhuansu;错误很明显吧,你定义的 getbanjing(double banjing) 是必须有1个参数的,结果你这里调用时没给任何参数,当然错误。
      

  2.   

    abstract class Sudu_fl
    {
    private int zhuansu;
     public double banjing;
    public Sudu_fl(){}
    public abstract  double getbanjing(double banjing);

    public void setzhuansu(int zhuansu)
    {
    this.zhuansu=zhuansu;

    public double sudu_car()
    {
    return java.lang.Math.PI*2* getbanjing(banjing) *zhuansu;
    }
    }
    public class Sudu_zl extends Sudu_fl
    {
    public double getbanjing(double banjing)
    {
    return this.banjing;
    }
    public static void main(String[]args){
      Sudu_zl sz=new Sudu_zl();
      sz.setzhuansu(15);
      sz.getbanjing(0.28);
        sz.sudu_car();
        System.out.println(sz.sudu_car());
    }


    }
    当这样修改后为何输出的是0.0
      

  3.   

    public double banjing;这个变量你整个程序中没有设置过值吧?那么缺省值就是 0
      

  4.   

    修改的话,应该是:
    public double getbanjing(double banjing) {
      return this.banjing;
    }改为:
    public double getbanjing(double banjing) {
      return this.banjing = banjing;
    }但这样做从 语义上来说,不符合 get 的概念,另外你的命名也是乱来的,还是认真打好基础吧。
      

  5.   

    mian方法内不是进行了传递吗
      

  6.   

    总体遵从驼峰规则。类名首字母大写,函数名首字母小写。getbanjing -> getBanJing 其实你这个的作用更像是: setBanJingclass Sudu_fl -> SuduFl