调用子类方法而不调用父类

时间:2018-02-23 14:36:29

标签: java oop

我想在不使用其父名称的情况下调用此函数:

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
    }
}

2 个答案:

答案 0 :(得分:0)

看看你的进口产品,你有类似的东西:

...
import <package_name>.Shape;
...

只需将其更改为:

...
import <package_name>.Shape.Color;
...

即使ShapeSquare都在同一个软件包中,因此根本没有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
}