学习java才几天,遇到一道‘菜鸟’级练习题,但对于我来说还是很难,请大家帮帮忙看看

njdtzmh 2008-04-29 03:12:57
题目:定义一个矩形类,包含有长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 的参数又不行。。实在搞不懂啊~~~
...全文
168 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq7825591 2008-04-29
  • 打赏
  • 举报
回复
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());
}
}
ccbianshen 2008-04-29
  • 打赏
  • 举报
回复
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());
}
}
ccbianshen 2008-04-29
  • 打赏
  • 举报
回复
Changfang cf=new Changfang(7);
这句话是构造一个参数的int类型的Changfang
进到构造器里面发现调用了父类的构造器super(2,5);
执行super(2,5)后
这时候只有一个对象在内存当中但是没有引用指向该对象
所以super(2,5)产生的对象就是一个垃圾
你下面还Juxing jx=new Juxing(2,5);
这时候你定义了一个jx指向一个Juxing类型的对象
明白了吗
njdtzmh 2008-04-29
  • 打赏
  • 举报
回复
我当时想的是class Changfang继承了class Juxing的变量a,b所以不需要定义了。。
我一直以为class Changfang(int c)是继承了class Juxing(int a,int b)后再补充一个int c
还是概念错误啊谢谢大家
njdtzmh 2008-04-29
  • 打赏
  • 举报
回复
阿哈哈。。谢谢
我就是这个意思,,我也觉得我这个程序有问题。只能25
谢谢谢谢万分感谢。。这个论坛真好啊。。这么多好人。。对我帮助很大,谢谢大家。

此贴已结
Dan1980 2008-04-29
  • 打赏
  • 举报
回复
楼主的基本思想是对的,但有一点,你的长方体的底面积只是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());
key_hua 2008-04-29
  • 打赏
  • 举报
回复

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());
}
}


//我也是初学....
naturals2008 2008-04-29
  • 打赏
  • 举报
回复
我看了一个月java啊。。。懒死了我
junjunweiwei 2008-04-29
  • 打赏
  • 举报
回复


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重新发下代码,看的好不舒服
njdtzmh 2008-04-29
  • 打赏
  • 举报
回复
请问楼上,那这个程序只能这么写咯?
我写的整个程序还是对的咯?
Juxing jx=new Juxing(2,5)//我知道这个是实例化Juxing类。但是不是也同时在传参吗?
那这里要传参,上面那个super(2,5)也是传参。。是不是这种程序都是要这样都得传两次的??
njdtzmh 2008-04-29
  • 打赏
  • 举报
回复
我写的代码是不是有问题哦??
我只是想尽一切办法让他能够执行,但是完全不知道这个代码对不对。。
是不是我一定要定义体积和面积的变量??
题目没说要定义这个。
anqini 2008-04-29
  • 打赏
  • 举报
回复
length只是数组的属性名字而已,没事!

我就是奇怪了super(2,5) //它只是调用其父类的构造方法而已,你不定义public Juxing(int a,int b) 当然出错了,参数不对.
Juxing jx=new Juxing(2,5) //这只是实例化Juxing 类而已~,
不是重复了??但是我不定义super 的参数又不行。。实在搞不懂啊~~~
psyl 2008-04-29
  • 打赏
  • 举报
回复
length不是关键字,可以使用。
njdtzmh 2008-04-29
  • 打赏
  • 举报
回复
还有一点。length 好像是关键字??不能作为变量吧
我一开始用length=a
出现错误了

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧