2017-01-08 3 views
3

Можно инициализировать переменную так:Должен ли я инициализировать производные переменные конструктором?

class A 
{ 
public int variable; 
} 
class B : A 
{ 
variable = 123; 
} 

вместо того, чтобы использовать застройщик, как это? :

class A 
{ 
    public int variable; 
} 

class B : A 
{ 
    public B() 
    { 
    variable = 123; 
    } 
} 

Здесь: Initialize class fields in constructor or at declaration?

Эти два способа, как представляется, эквивалентно, но с использованием 1-й путь в производном классе, кажется, является незаконным. Тогда можно ли инициализировать переменные другим способом, чем использовать конструктор?

ответ

1

Вы можете инициализировать поле класса, когда вы объявляете его, как показано ниже:

public class Example 
{ 
    public int Number = 3; 
} 

или вы можете сделать это в конструкторе, как показано ниже:

public class Example; 
{ 
    public int Number; 
    public Example(int number) 
    { 
     Number = number; 
    } 
} 

Есть только эти два варианта. В вашем случае у вас есть базовый класс, где вы объявляете поле. Поэтому это поле можно инициализировать либо в объявлении, либо через конструктор. Вот почему это нелегальной следующее:

class A 
{ 
    public int variable; 
} 

class B : A 
{ 
    variable = 123; 
} 

Затем, можно инициализировать переменные в другой форме, чем с помощью конструктора?

Конечно, это возможно, но вы должны сделать это в базовом классе:

class A 
{ 
    public int variable = 123; 
} 
+0

Хорошо, но может я каким-то образом изменить значение этой переменной в производном классе, после того, как я инициализировать его в базовый класс? – Smorts

+0

Из кузэр вы можете. В любом * методе * вашего производного класса вы можете ссылаться на эту переменную, используя ее имя 'variable' и устанавливаете там новое значение. – Christos

+0

Итак, в конструкторе и т. Д. Но я не могу просто ввести 'variable = something' в определение производного класса? – Smorts

Смежные вопросы