为了使这个程序运行,我必须将“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
}
}
答案 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)
Rectangle.derp(int thing, int length, int width);
这不是方法声明。这种语法都错了。您是要尝试将derp
声明为可以使用的方法,还是要尝试拨打derp
?作为读者,目前尚不清楚。
从逻辑上讲,Rectangle
应该延伸Shape
,而不是相反。
这没有做任何事情:
shape(int length, int width, int thing ){
length = 0;
width = 0;
}
您只是将参数分配给不同的值。
休息一下,花些时间学习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
}
}