Композиция

К.-это повторное использование реализации (а не интерфейса класса). Новый класс не обладает интерфейсом использованных классов.

class WaterSource {

private String s;

WaterSource () {//конструктор

System.out.println (“WaterSource ()”);

s = “constructed”; // сконструировали

}

public String toString() {return s;}

}

___________________________________________________________________

public class SprinclerSystem {

private String valve1, valve2;

private WaterSource sourse = new WaterSource ();//инициализация

private int i;

private float f;

public String to String (){

return

“valve1= ” + valve1+

“valve2= ” + valve2+ “\n”

“i = ” + i + “f= ” + f + ” ” +

“source = “+ source;

}

public static void main (String[] args) {

SprinclerSystem sprinclers = new SprinclerSystem ();//к-р по умолчанию

System.out.println (sprinclers);

}

}

Напечатается:

WaterSource ()//инициализация поля sourse перед конструктором –вызван

конструктор WaterSource()

valve1= null valve2= null // метод SprinclerSystem.toString()

i=0 f=0.0 source = constructed

Примитивы инициализируются нулем. Ссылки заполняются null. При вызове метода произойдет исключение (по ссылке null).

Поэтому ссылка должна быть инициализирована:

- в точке определения объекта: А а = new A(5); Эта инициализация будет выполнена перед вызовом конструктора. Поле будет иметь одно и то же значение во всех объектах этого класса;

- в конструкторе данного класса;

- непосредственно перед использованием;

- в блоке инициализации.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: