题目:定义一个矩形类,包含有长length、宽width两种属性,构造方法(要求写出初始化长和宽)和计算面积方法findArea()(实现返回面积值)。
      编写一个长方体类,继承自矩形类,具有长length、宽width、高height属性,构造方法和计算体积的方法findVolume()(实现返回体积值)。
      编写一个测试类Test,对以上两个类进行测试,通过调用其构造方法创建一个长方体对象(其中长length为2、宽width为5、高height为7),要求输出其底面积和体积。我自己弄了2小时。。请大家不要笑
才弄出来,但是我总觉得我这种代码是脱裤子放屁--多此一举类型,肯定有所不对(虽然能算出结果)
请大家帮我看看
class Juxing
{
int leght;
int width;
int mj;
public Juxing(int a,int b)
{

leght=a;
width=b;
mj=leght*width;
}
public int findarea()
{
return mj;
}
}
class Changfang extends Juxing
{
int height;
int tj;  public Changfang(int c)
  { 
   super(2,5);
   height=c;
   tj=mj*height;
  }
public int findvolume()
{
return tj;

}
}class Test
{
public static void main(String[] args)
{
Changfang cf=new Changfang(7);
Juxing jx=new Juxing(2,5);
System.out.println("底面积="+jx.findarea());
System.out.println("体积="+cf.findvolume());

}
我就是奇怪了super(2,5)
和          Juxing jx=new Juxing(2,5)
不是重复了??但是我不定义super 的参数又不行。。实在搞不懂啊~~~

解决方案 »

  1.   

    还有一点。length 好像是关键字??不能作为变量吧
    我一开始用length=a
    出现错误了
      

  2.   

    length不是关键字,可以使用。
      

  3.   

    length只是数组的属性名字而已,没事!我就是奇怪了super(2,5) //它只是调用其父类的构造方法而已,你不定义public Juxing(int a,int b) 当然出错了,参数不对.
            Juxing jx=new Juxing(2,5) //这只是实例化Juxing 类而已~,
    不是重复了??但是我不定义super 的参数又不行。。实在搞不懂啊~~~
      

  4.   

    请问楼上,那这个程序只能这么写咯?
    我写的整个程序还是对的咯?
    Juxing jx=new Juxing(2,5)//我知道这个是实例化Juxing类。但是不是也同时在传参吗?
    那这里要传参,上面那个super(2,5)也是传参。。是不是这种程序都是要这样都得传两次的??
      

  5.   

    class Juxing 

    int leght; 
    int width; 
    int mj; 
    public Juxing(int a,int b) 
    { leght=a; 
    width=b; 
    mj=leght*width; 

    public int findarea() 

    return mj; 


    class Changfang extends Juxing 

    int height; 
    int tj;   public Changfang(int c) 
      {  
       super(2,5); 
       height=c; 
       tj=mj*height; 
      } 
    public int findvolume() 

    return tj; } 
    } class Test 

    public static void main(String[] args) 

    Changfang cf=new Changfang(7); 
    Juxing jx=new Juxing(2,5); 
    System.out.println("底面积="+jx.findarea()); 
    System.out.println("体积="+cf.findvolume()); 
    }  
    } 帮LZ重新发下代码,看的好不舒服
      

  6.   


    class Juxing 

    protected int leght; 
    protected int width;  
    public Juxing(int a,int b) 

    leght=a; 
    width=b;  

    public int findarea() 

    return leght*width; 


    class Changfang extends Juxing 

    private int height; 
      public Changfang(int a,int b,int c) 
      {  
       super(a,b); 
       height=c; 
      } 
    public int findvolume() 

    return findarea()*height; } 
    } public class Test 

    public static void main(String[] args) 

    Changfang cf=new Changfang(2,5,7); 
    Juxing jx=new Juxing(2,5); 
    System.out.println("底面积="+jx.findarea()); 
    System.out.println("体积="+cf.findvolume()); 
    }  

    //我也是初学....
      

  7.   

    楼主的基本思想是对的,但有一点,你的长方体的底面积只是2*5,不能是别的了。所以,你的长方体不具备一般性,不代表所有长方体,只长表所有底面是2*5的长方形的一类长方体。所有,代表长方体的类的构造方法应该是这样的:  public Changfang(int a, int b, int c) 
      {  
        super(a, b); 
        height=c; 
        tj=mj*height; 
      }
    测试代码也相应改成:Changfang cf=new Changfang(2, 5, 7);
    System.out.println("底面积="+cf.findarea()); 
    System.out.println("体积="+cf.findvolume()); 
      

  8.   

    我当时想的是class Changfang继承了class Juxing的变量a,b所以不需要定义了。。
    我一直以为class Changfang(int c)是继承了class Juxing(int a,int b)后再补充一个int c
    还是概念错误啊谢谢大家
      

  9.   

    Changfang cf=new Changfang(7); 
    这句话是构造一个参数的int类型的Changfang
    进到构造器里面发现调用了父类的构造器super(2,5);
    执行super(2,5)后
    这时候只有一个对象在内存当中但是没有引用指向该对象
    所以super(2,5)产生的对象就是一个垃圾
    你下面还Juxing jx=new Juxing(2,5); 
    这时候你定义了一个jx指向一个Juxing类型的对象
    明白了吗
      

  10.   

    public class test {
    public static void main(String[] args) {
    Changfang cf = new Changfang(7);
    //Juxing jx = new Juxing(2, 5);
    //System.out.println("底面积=" + jx.findarea());
    System.out.println("底面积=" + cf.findarea());
    System.out.println("体积=" + cf.findvolume());
    }
    }
      

  11.   

    class Juxing 

    int leght; 
    int width; 
    int mj; 
    public Juxing(int a,int b) 


    leght=a; 
    width=b; 
    mj=leght*width; 

    public int findarea() 

    return mj; 


    class Changfang extends Juxing { 
    int height; 
    int tj; 
    public Changfang(int c,int a,int b) 
    {  super(a,b);
      
       height=c; 
       tj=mj*height; 
      } 
    public int findvolume() 

    return tj; 


    class Test 

    public static void main(String[] args) 

    Changfang cf=new Changfang(7,2,5); 

    System.out.println("底面积="+cf.findarea()); 
    System.out.println("体积="+cf.findvolume()); 
    }