我想在不使用其父名称的情况下调用此函数:
Square square = new Square(Color.Blue, Pattern.DOTTED, 4);
但它的错误并说使用了这个:
Square square = new Square(Shape.Color.Blue, Shape.Pattern.DOTTED, 4);
我想在没有导入Shape calss及其主要方法
的情况下执行此操作该课程实施为:
public class Shape {
Color color;
Pattern pattern;
public Shape(Color c, Pattern p) {
this.color = c;
this.pattern = p;
}
enum Color {
BLUE, GREEN, RED
}
enum Pattern {
DOTTED, STRIPED, ZIGZAG
}
}
public class Square extends Shape {
Integer length;
Shape shape = new Shape(Color.BLUE,Pattern.DOTTED);
public Square(Color c, Pattern p, int length) {
super(c, p);
this.length = length; // autoboxing
}
}
答案 0 :(得分:0)
看看你的进口产品,你有类似的东西:
...
import <package_name>.Shape;
...
只需将其更改为:
...
import <package_name>.Shape.Color;
...
即使Shape
和Square
都在同一个软件包中,因此根本没有Shape
的导入,添加此导入也可以完成这项工作。
您必须明确声明嵌套类的导入。 也许您的IDE默认情况下不会自动完成嵌套类的导入。
答案 1 :(得分:0)
我只需要在形状类
之外定义枚举public class Shape {
Color color;
Pattern pattern;
public Shape(Color c, Pattern p) {
this.color = c;
this.pattern = p;
}
enum Color {
BLUE, GREEN, RED
}
enum Pattern {
DOTTED, STRIPED, ZIGZAG
}