Java:在超类中初始化私有变量

时间:2016-04-26 00:04:37

标签: java inheritance initialization

在超类中构造函数之外初始化的私有变量是否会在子类中正确继承?

例如,在以下代码中,私有实例变量x是否会在子类中正确继承?我知道只有在Rectangle中定义的2个公共getter,才能在Square子类中访问x和y。但是,如果x在构造函数外部初始化,子类是否仍会成功继承x?

public class Rectangle
{
    private int x = 0;
    private int y;
    protected double height;
    protected double length;

    public Rectangle(double length, double height)
    {
        this.height = height;
        this.length = length;
        y = 0;
    }

    public int getx()
    {
        return x;
    }

    public int gety()
    {
        return y;
    }
}


public class Square extends Rectangle
{
    public Square(double side)
    {
        super(side, side);
    }
}

1 个答案:

答案 0 :(得分:1)

是的,它继承没有问题。如果构造函数中没有赋值,则最终会获取默认值,因为它是实例成员。

Object的默认值为null,每个基元都有默认值。