题目要求:
有一个抽象类ObjectVolume,如下所示:
abstract class ObjectVolume
{
abstract double getVolume(); //返回物体的体积
}
(1)编写球体类,立方体类和圆柱体类,它们是抽象类ObjectVolume的子类。
(2)编写一个公共类,其中包含main方法和static void get(ObjectVolume obj)方法。
(3)在main方法中,从键盘上输入1(表示球体)、2(表示立方体)、3(表示圆柱体)时,调用get方法可以分别得到球体、立方体、圆柱体的体积。
/*疑惑:我不知道static void get(ObjectVolume obj)方法干什么用的...怎么创建,是在主函数里创建吗?老师说要使用上转型什么的。。。不知道如何使用程序已经编好,请教如何修改使得static void get(ObjectVolume obj)方法能够用到*/
请尽量用简单的语言和方法修改...
package pzw;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
int a;
double b;
Scanner reader=new Scanner(System.in);
System.out.println("请输入1(表示球体)、2(表示立方体)、3(表示圆柱体)");
a=reader.nextInt();
if(a==1)
{
double r,v;
System.out.println("请输入半径");
r=reader.nextDouble();
qiu x=new qiu(r);
v=x.getVolume();
System.out.println("球体积为"+v);
}
else if(a==2)
{
double r,v;
System.out.println("请输入边长");
r=reader.nextDouble();
lifangti x=new lifangti(r);
v=x.getVolume();
System.out.println("立方体体积为"+v);
}
else if(a==3)
{
double r,h,v;
System.out.println("请输入半径和高");
r=reader.nextDouble();
h=reader.nextDouble();
yuanzhu x=new yuanzhu(r,h);
v=x.getVolume();
System.out.println("圆柱体体积为"+v);
}
}
}
package pzw;
abstract class ObjectVolume {
abstract double getVolume();
}
package pzw;
public class lifangti extends ObjectVolume{
double v;
lifangti(double a){
v=a*a*a;
}
public double getVolume()
{
return v;
}
}
package pzw;
public class qiu extends ObjectVolume{
double v=0;
qiu(double a)
{
v=4.0/3*a*a*a*3.14;
}
public double getVolume()
{
return v;
}
}
package pzw;
public class yuanzhu extends ObjectVolume
{
double v;
yuanzhu(double r,double h)
{
v=h*r*r*3.14;
}
public double getVolume()
{
return v;
}
}
静态方法直接用类名去调用,“类名.方法名”。
或者把static拿掉,就可以用new一个实例再用“实例名.方法名”来调用了。
可是我为什么看了半天没找的你的static void get(ObjectVolume obj)方法呢?
应该不能创建,但是能调用
看了半天,我觉得static void get(ObjectVolume obj)方法应该是用于得到obj对象的体积的。
但是这里的get方法居然是void的,我不明白这到底是怎么输出数据。
我的建议是直接把get方法的返回值改为double。
代码为
static double get(ObjectVolume obj)
{
return obj.getVolume();
}
main函数里的v=x.getVolume();这类的语句改为v=get(x);
其他部分不需要修改。
我觉得这题应该是考察多态性。
目测可能和设计模式有关,对于模式也不懂,想了半天也没想出来怎么设计才能用到这个get方法。
二楼描述的比较清楚了,用static比较方便调取求体积V的方法
get和set方法放在你创建的静态方法, 然后用实例化,对象调用 对象.get方法, 主函数里面能创建静态方法,但是只能在那函数里用
用数学的话建议用math. JAVA API 有调用 的类,和方法
我觉得你的get方法有问题吧,一般get方法会返回某个对象或者值,你这个可能使用来返回对象的吧。根据你传入的数字构造不同的对象。
3个子类继承父类,重写父类的get方法,返回对应的体积