这是模型类:
public class Test4
{
public static void main(String []args)
{
Rectangle2 one = new Rectangle2(5, 20);
Box2 two = new Box2(4, 10, 5);
showEffectBoth(one);
showEffectBoth(two);
}
public static void showEffectBoth(Rectangle2 r)
{
System.out.println(r);
}
}
我正在尝试创建一个与它非常相似的class
,但它不起作用。我应该改变什么?我已经创建了所有这些课程。
public class testNew
{
public void showEffectBoth(Rectangle3 r)
{
System.out.println(r);
}
public static void main (String []args)
{
Rectangle3 one = new Rectangle3(5,20);
Box3 two = new Box3(4,4,4);
Box3 three = new Box3(4,10,5);
Cube3 four = new Cube3(4,4,4);
showEffectBoth(one);
showEffectBoth(two);
showEffectBoth(three);
showEffectBoth(four);
}
}
当我尝试编译时,它说:illegal start of expression
答案 0 :(得分:1)
您正在尝试使用其参数的常用方法 接受各种类的实例,在这种情况下是一件好事 do正在为所有类实现一个接口。你也可以使用泛型。
public interface CommonInterface
{
public void doSomeThing();
}
现在为其他类实现它:
public class Box implements CommonInterface
{
@Override
public void doSomeThing(){
//do some thing;
}
//other fields or methods
}
}
public class Rectangle implements CommonInterface
{
@Override
public void doSomeThing(){
//do some thing;
}
//other fields or methods
}
}
现在您可以使用以下常用方法:
public void showEffectBoth(CommonInterface r)
{
r.doSomeThing();
}
你可以这样称呼它:
Rectangle one = new Rectangle(5, 20);
Box two = new Box(4, 10, 5);
showEffectBoth(one);
showEffectBoth(two);
注意:您的界面内部没有任何内容,在这种情况下您也可以拥有例如:
public void showEffectBoth(CommonInterface r)
{
System.out.println(r);
}
和
Rectangle one = new Rectangle(5, 20);
Box two = new Box(4, 10, 5);
showEffectBoth(one);
showEffectBoth(two);
答案 1 :(得分:0)
你在另一个方法中有一个方法 - 你不能用Java做的事情。
public class testNew {
public static void main (String []args) {
Rectangle3 one = new Rectangle3(5,20);
Box3 two = new Box3(4,4,4);
Box3 three = new Box3(4,10,5);
Cube3 four = new Cube3(4,4,4);
showEffectBoth(one);
showEffectBoth(two);
showEffectBoth(three);
showEffectBoth(four);
// you can't nest this method here
public void showEffectBoth(Rectangle3 one) {
System.out.println(one);
}
}
}
您的代码缩进不准确,这会阻止您查看错误。相反,如果你努力缩进你的代码,问题就会立即变得明显,这就是为什么学习和使用适当的缩进非常重要的一个原因。它对于创建良好的代码至关重要。
解决方案:分开你的方法。
其他“侧面”建议,您需要学习并使用Java naming conventions。变量名都应以较低的字母开头,而类名以大写字母开头。遵循这些建议以及遵循良好的代码格式化实践将允许其他人(例如我们!)更好地理解您的代码,更重要的是,将允许您的未来自我更好地理解您在6个月前撰写代码。
另外,请注意错误消息的位置,因为它可能会发生在有问题的嵌套方法的正上方。将来,如果仔细查看编译器错误(和JVM异常)的位置,您将经常发现有问题的代码并能够修复它。