用Java导入类?

时间:2014-02-24 20:49:22

标签: java import

为了使这个程序运行,我必须将“derp”方法从Shape类导入到矩形类中。但无论我自己或导师尝试什么,我们都无法使其发挥作用。我真正需要实现的是,Shape中的“derp”方法需要能够在Rectangle中工作。但是,导入方法的任务让我们难以接受。

public abstract class shape{

    shape(){

    }
    shape(int length, int width, int thing ){
        length = 0;
        width = 0;
    }
    public int derp(int thing, int length) {
        thing = (int) Math.random() * 9 ;
        length = thing;
        return length;
    }
}

public class Rectangle extends shape {

public static void main(String args[])
{
        shape.getLength(Length, Width);
            //r1 will take all default value
Rectangle r1 = Rectangle();        

//r2 will take all supplied value
Rectangle r2 = Rectangle(4, 5);  

//r3 will take supplied length.  width will take default value
Rectangle r3 = Rectangle(10);    

//r4 will take the same value of r2
Rectangle r4= r2;           

//the rest of the code
}
private static void Rectangle(int width2, int length2) {
    // TODO Auto-generated method stub

}

}

6 个答案:

答案 0 :(得分:2)

在我看来,你应该扭转继承。它应该是矩形扩展形状,因为矩形形状

编辑1 当您反转继承时,您应该能够在Rectangle上调用derp方法。

    RectAngle r = new Rectangle();
    r.derp(thing, length);

编辑2 您也不应该将变量硬编码到Shape实例中。这不是一个真正有用的方法。有两种方法可以做到。让shape类具有受保护的变量(意味着它将被继承)。然后你的形状类应该看起来像:

public abstract class shape{

    protected int length;
    protected int width;

    shape(){

    }

    shape(int length, int width){
        this.lenght = length;
        this.width = width;
    }

    public int derp() {
        int thing = (int) Math.random() * 9 ;
        length = thing;
        return length;
    }
}

或者,如果你不想对你的班级做出这么大的改变,你可以直接将参数传递给方法,如

    r.derp(1, 100);

但我同意tieTYT,你应该花一些时间学习更多java语法。因为这是一种非常奇怪的通话方式:)。

答案 1 :(得分:0)

  1. Rectangle.derp(int thing, int length, int width);

    这不是方法声明。这种语法都错了。您是要尝试将derp声明为可以使用的方法,还是要尝试拨打derp?作为读者,目前尚不清楚。

  2. 从逻辑上讲,Rectangle应该延伸Shape,而不是相反。

  3. 这没有做任何事情:

    shape(int length, int width, int thing ){
        length = 0;
        width = 0;
    }
    

    您只是将参数分配给不同的值。

  4. 休息一下,花些时间学习Java的语法。

答案 2 :(得分:0)

Rectangle应该延伸Shape,而不是相反。

同时删除此行

Rectangle.derp(int thing, int length, int width);

答案 3 :(得分:0)

您不会将类中的方法导入其他类。从逻辑上讲,你希望Rectangle根据命名约定扩展形状(也应该是Shape),但你正在做相反的事情。

然而,在您的代码中有许多事情没有意义,因此您可能希望用清晰的英语解释您要完成的任务。

答案 4 :(得分:0)

没有办法,这可行,因为你试图从超类访问子类的方法。超类不知道它的孩子。您可以使用子类中超类的方法,也可以将子类中的方法放入超类中以在那里使用它。

答案 5 :(得分:0)

好的..所以你的类Shape扩展了Rectangle ......我们将忽略那个不寻常的逻辑。

Rectangle.derp(int thing, int length, int width);// wrong

首先,你不能通过在调用中声明参数来调用方法derp。你可以这样打电话,例如:

int thing = 1, length = 2, width = 3;
Rectangle.derp(thing, length, width);//with condition that derp method 
//declaration to be public static

Rectangle r1 = Rectangle();//wrong

这是类构造函数。你声明它是公开的,除非你想让你的班级成为单身人士..但我怀疑。您可以使用' new'来实例化它。这样的键盘:

Rectangle r1 = new Rectangle();

具有1和2参数的那个相同。

这里的Rectangle类的完整代码:

public class Rectangle {
    public Rectangle(int width2, int length2) {
        // TODO: Process width and length here
    }

    public Rectangle() {
        // TODO: process default values here
    }

    public Rectangle(int value) {
        // TODO: Process value here
    }

    public static void derp(int thing, int length, int width) {

    }

    public static void main(String args[]) {

        int thing = 1, length = 2, width = 3;
        Rectangle.derp(thing, length, width);

        // r1 will take all default value
        Rectangle r1 = new Rectangle();

        // r2 will take all supplied value
        Rectangle r2 = new Rectangle(4, 5);

        // r3 will take supplied length. width will take default value
        Rectangle r3 = new Rectangle(10);

        // r4 will take the same value of r2
        Rectangle r4 = r2;

        // the rest of the code
    }

}