访问超类字段

时间:2014-02-25 14:18:22

标签: java inheritance

例如,我有抽象类Shape,它获取形状的坐标:

public abstract class Shape{
    private int x;
    private int y;

    public Shape(int x, int y){
        this.x=x;
        this.y=y
    }

    public abstract void onDraw();

}

现在我的课程Rect来自Shape

public class Rect extends Shape{
    private int height;
    private int width;

    public Rect(int height, int width){
        this.height=height;
        this.width=width;
    }

    @Override
    public void onDraw(){
        //this method should get the width and height and the coordinates x and y, and will print the shape rect
    }
}

现在我的问题是:如何从Shape中获取抽象类Rect的坐标x和y?

3 个答案:

答案 0 :(得分:6)

简单地为他们制作一些吸气剂:

public abstract class shape{
    private int x;
    private int y;

    public shape(int x,int y){
        this.x=x;
        this.y=y
    }

    public abstract void onDraw();

    }

    public int getX() {
        return this. x;
    }

    public int getY() {
        return this. y;
    }

或使属性受到保护。

请注意,如果您创建rect,则永远不会设置x和y,因为您没有调用超级构造函数

答案 1 :(得分:5)

只要它们是private,你就无法获得它们。改为使用protected

可以找到更多信息here.

答案 2 :(得分:0)

你做不到。 私有的全部意义在于你无法获得变量。如果班级没有给出任何解决方法,你就无法得到它。