public class Area{ int lon;
 int wide;
 double hight;
 double PI=3.14;
 double r;
 double buttom;
   
  Area(int a,int b){
   
    int area;
   lon=a;wide=b;area=lon*wide;
 System.out.println(area);
        
       }
 
    
  Area(double c,double e){
   
    double area;
     buttom=c;hight=e;area=0.5*buttom*hight;
    System.out.println(area);  
         
         }
    
        
    Area(double f) {
     
     double area;
     r=f;area=PI*r*r;
   System.out.println(area); 
        }   
 
           
 public static void main(String args[]){
   
   Area S=new Area(5,3);
  
   Area T=new Area(5.2,3.4);
   
   Area p=new Area(6.4);
  
   
  System.out.println("长方形的面积为:"+S.Area());
   
    System.out.println("三角形的面积为:"+T.Area());
    
    System.out.println("圆的面积为:"+P.Area()); 
  }
  
  
 } 
     
     
刚学了几天java,很多东西还不明白,上面是我写的一个关于方法重载的习题的程序,编译错误是最后三个system语句找不到符号这是什么原因 呢   ???能帮我详细解释下什么叫方法重载吗   谢啦!!

解决方案 »

  1.   

    public class Area{  int lon; 
     int wide; 
     double hight; 
     double PI=3.14; 
     double r; 
     double buttom; 
        
      Area(int a,int b){ 
        
        int area; 
       lon=a;wide=b;area=lon*wide; 
     System.out.println(area); 
             
           } 
      
         
      Area(double c,double e){ 
        
        double area; 
         buttom=c;hight=e;area=0.5*buttom*hight; 
        System.out.println(area);   
              
             } 
         
             
        Area(double f) { 
          
         double area; 
         r=f;area=PI*r*r; 
       System.out.println(area);  
            }    
      
                
     public static void main(String args[]){ 
        
       Area S=new Area(5,3); 
       
       Area T=new Area(5.2,3.4); 
        
       Area p=new Area(6.4); 
    }
    }
      

  2.   

    你的是构造方法重载,所以当出现new Area(5,3);  这样的代码时就已经
    去调用构造方法,而你后面的System.out.println("长方形的面积为:"+S.Area()); 
    这句,因为你已经声明了带参数的构造方法,所以系统就不为你提供默认的构造方法了,
    所以报了你说的那个错误
    至于方法重载,书上都讲的很清楚
    就是指在一个类中,方法名字相同,但是参数列表或返回类型不同的一组方法,
    但是值得注意的是,仅仅返回类型不同是不能叫做方法重载的,因为当我们定义的方法需要的是
    副产物,也就是不需要它的返回值的时候,编译器就没有办法去辨别了
    基本上书上讲的很清楚,可以看一下
      

  3.   

    System.out.println("长方形的面积为:"+S.Area()); 
      

  4.   

    S.Area()); Area 是构造器,不是方法,所以不能被调用!
      

  5.   

      System.out.println("长方形的面积为:"+S.Area(5,3));  这个语句中的S.Area(5,3)是通过引用对象来调用类里的一个方法,但是你并没有声明该方法,够造方法是不能这样调用的,够造方法是在创建一个实例的时候已经调用了。下面针对你这个类进行了一些修改,这样也可以让你熟悉方法的重载。下面代码在JDK 6上运行通过。
    public class Area{ 
     int lon; 
     int wide; 
     double hight; 
     double PI=3.14; 
     double r; 
     double buttom; 
     double area ;   //修改处1
     public  Area(int a,int b)
     { 
        lon=a;wide=b;
         area=lon*wide; 
     } 
     public   Area(double c,double e)
     { 
         buttom=c;
         hight=e;
         area=0.5*buttom*hight; 
       System.out.println(buttom+"++++"+hight+0.5*buttom*hight);
      } 
      public   Area(double f) 
      { 
         r=f;
         area=PI*r*r; 
     
       }  
     public static void main(String args[]){ 
       Area S=new Area(5,3); 
       Area T=new Area(5.2,3.4); 
       Area P=new Area(6.4); 
       System.out.println("长方形的面积为:"+S.area); 
       System.out.println("三角形的面积为:"+T.area); 
       System.out.println("圆的面积为:"+P.area);  
      } 
       
       
     }  
      

  6.   

    构造器,就是名字和类名相同,但没有返回值的那种!而方法必须有返回值,void 也算!