Java имеет классы, которые состоят из трех вещей: конструкторов, полей и методов (и некоторых других вещей, таких как другие классы). Поля - это переменные, в которых могут храниться примитивные значения или объекты, а методы - это просто функции. Поля и методы могут быть static
. Объект создается, когда вызывается конструктор класса, и ему предоставляется копия всех нестатических полей и методов в классе.
Таким образом, наш объект может «получить доступ» к другому объекту тремя различными способами:
- при наличии другого объекта в одном из его полей (состав)
- путем получения другого объекта в качестве параметра к одному из его методов (передача параметров)
- путем создания другого объекта внутри одного из его методов (локальное объявление)
Примером класса будет
class Person {
String name;
boolean alive;
Person(String _name) {
name = _name;
alive = true;
}
void kill(Person anotherPerson) {
anotherPerson.die();
}
void createAndKill() {
Person newPerson = new Person("John Doe");
newPerson.kill();
}
void die() {
alive = false;
}
}
Объект типа Person
имеет доступ к другому объекту через
- Композиция, имеющая объект типа
String
в качестве поля
- параметр, передаваемый кем-то вызывающим
kill()
, который принимает другой Person
объект в качестве параметра
- локальное объявление кем-то, вызывающим
createAndKill()
, в котором будет создан (и безжалостно убит) новый объект типа Person