我遇到了一些麻烦。此代码不会引发任何编译时错误,但不会显示System.out.println
。它应该显示你应该如何着色四面。我在for循环中犯了错误还是结构错误?
见下面的代码:
public interface Colorable {
// Abstract to be called later
public abstract String howToColor();
}
public class HowToColour {
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
public class TestColorable {
public static void main(String[] args) {
Object[] obj1 = {
new Square(),
new Rectangle(),
new Rhombus(),
new Parallelogram(),
new Trapezium()
};
for (int i = 0; i < obj1.length; i++) {
if (obj1[i] instanceof Colorable) {
System.out.println(((Colorable) obj1[i]).howToColor());
} else {
System.out.println("This shape is not to be colored");
}
}
}
}
class GeometricOgject {
}
// Initial Method to use the interface
class Square extends GeometricOgject implements Colorable {
@Override
public String howToColor() {
return "Square: Color all four sides";
}
}
// Method to use an interface in an abstract class
abstract class FourSides implements Colorable {
}
class Rectangle extends FourSides {
@Override
public String howToColor() {
return "Rectangle: color all four sides";
}
}
class Rhombus extends FourSides {
@Override
public String howToColor() {
return "Rhombus: color all four sides";
}
}
class Parallelogram extends FourSides {
@Override
public String howToColor() {
return "Parallelogram: color all for sides";
}
}
class Trapezium extends FourSides {
@Override
public String howToColor() {
return "Trapezium: color all four sides";
}
}
答案 0 :(得分:3)
如果这一切都在一个文件中,我可以看到与具有main函数的两个类的声明存在潜在冲突。巧合的是,你的一个主管是空的,可能是正在执行的主管之一。如果它们位于不同的文件中,您应该只能在命令行上执行此操作:
java TestColorable
我认为正在发生的事情相当于:
java HowToColour
执行以下操作,每个 OWN FILE :
public class HowToColour
{
//implementation
}
public class TestColorable
{
//implementation
}
javac TestColorable.java
javac HowToColour.java
java TestColorable
**output will go here**
java HowToColour
**no output here**