2016-04-26 3 views
2

Будут ли правильно введенные в подкласс частные переменные, инициализированные вне конструктора в суперклассе?Java: инициализация частных переменных в суперклассе

Например, в следующих кодах переменная x частного экземпляра будет правильно унаследована в подклассе? Я знаю, что x и y могут быть доступны в подклассе Square только с 2-мя публичными геттерами, определенными в Rectangle. Однако, если 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

Да. Нет проблем. – Gendarme

+0

Частные члены не унаследованы вообще. Однако они инициализируются в соответствии с текстом программы. – EJP

ответ

1

Да, он наследует без проблем. Если в конструкторе нет значения, вы получите значение по умолчанию, так как оно является членом экземпляра.

Значение по умолчанию Object равно null, и каждый примитив имеет значение по умолчанию.

+0

Вы имеете в виду, что, поскольку я присваиваю значение частной переменной x вне конструктора, назначенное значение не будет унаследовано, но значение по умолчанию будет унаследовано? Скажем, если я изменил строку 'private int x = 0' на' private int x = 1', я получу значение x как значение по умолчанию 0 или 1 в подклассе? Спасибо. –

+0

Вы получите 1 :), поскольку он является членом экземпляра и назначен. –