+ -
当前位置:首页 → 问答吧 → 这段代码编译通过,课时结果居然显示函数错误?!!

这段代码编译通过,课时结果居然显示函数错误?!!

时间:2011-07-20

来源:互联网

public class TestShape {
    static public void mian(String[] args){
        Shape[] s=new Shape[2];
        s[0]=new Rect(3,4);
        s[1]=new Circle(2);
        for(int i=0;i<s.length;i++){
            System.out.println(s.sqr());
            System.out.println(s.per());
        }
    }
}
class Shape{
    public Shape(){}
    public double sqr(){
        return 0;
    }
    public double per(){
        return 0;
    }    
}
class Rect extends Shape{
    private double x;
    private double y;
    public Rect(){}
    public Rect(double x,double y){
        this.x=x;
        this.y=y;
    }
    public double sqr(){
        return x*y;
    }
    public double per(){
        return (x+y)*2;
    }
}
class Circle extends Shape{
    private double r;
    public Circle(){}
    public Circle(double r){
        this.r=r;
    }
    public double sqr(){
        return r*r*3.1415926535;
    }
    public double per(){
        return r*2*3.1415926535;
    }
}

代码在这,求解释

作者: qqqwww1989   发布时间: 2011-07-20

这代码也能编译过,真的假的啊。。。。。。。

复制代码
  1. static public void mian(String[] args)

应改为:
复制代码
  1. public static void main(String[] args)


复制代码
  1. System.out.println(s.sqr());
  2. System.out.println(s.per());

应改为:
复制代码
  1. System.out.println(s[i].sqr());
  2. System.out.println(s[i].per());


未测试,你试试看吧,没法解释  

作者: 一直很安静   发布时间: 2011-07-21