Класс: используется для определения реальной сущности в среде программирования.
Любой реальный объект, имеющий хотя бы один property
и соответствующий behaviour
, может рассматриваться как класс. Давайте рассмотрим пример Car , у которого есть свойство accelerator
, которое помогает машине двигаться и контролировать ее скорость. Соответствующее поведение - acceleration
, которое прямо пропорционально толчку, приложенному к ускорителю.
class Car {
private String tier;
private String tierFriction;
private double weight;
private double gasFedToEngine;
}
Приведенный выше класс показывает некоторые свойства автомобиля, от которых зависит его ускорение. Поведение (method in the class
) всегда зависит от свойства (свойств) (global attribute(s) of the class
). Теперь, если вам нужно больше деталей, вы можете определить Tier
как другую сущность, тогда определение будет выглядеть как
class Tier {
private String tierMaterial;
private String tierFriction;
private double weight;
private double tierDiameter;
}
class Car {
private Tier tier; // getting all properties of Tier here itself
private double weight;
private double gasFedToEngine;
}
Объект: используется для определения различных разновидностей сущности и для отдельных операций с ними.
Теперь мы определили сущность для нашей программы, скажем, у нас есть демонстрационный зал подержанных автомобилей, автомобили разных компаний. Таким образом, каждый автомобиль становится object
нашей сущности. Объектами могут быть Audi, Nissan, Ferrari и т. Д. Поэтому, открыв автосалон, мы добавляем в него автомобили следующим образом
static List<Car> showroomCars = new ArrayList<Car>();
public boolean addCarToShowroom() {
Car carNissan = new Car(); // always creates a new objects and allocates some memory in heap
carNissan.setName("Nissan");
carNissan.setColor(RED);
carNissan.setWeight(300);
showroomCars.add(carNissan);
Car carAudi = new Car();
carAudi.setName("Audi");
carAudi.setColor(BLACK);
carAudi.setWeight(270);
showroomCars.add(carAudi);
}
Итак, теперь в автосалон добавлены две новые машины, одна из которых - Nissan, а другая - Audi, каждая из которых имеет свои собственные значения атрибутов.
Class
только дает определение, манипуляции выполняются на Object
, для выполнения манипуляций с любым классом, объект должен быть создан. Каждый раз, когда объект создается в классе, все его несатикические (экземплярные) переменные будут загружаться в память с соответствующими значениями по умолчанию.
Ссылка: используется для адресации объекта
Когда мы говорим Car carAudi = new Car();
, мы определяем новый объект для Car, и этому объекту назначается ячейка памяти. Ссылочная переменная carAudi
содержит адрес памяти этого объекта. Объект никогда не доступен напрямую ни пользователю, ни его расположению в памяти. Вот где ссылочная переменная имеет значение, она хранит формат ячейки памяти hexadecimal
. Если мы хотим внести изменения в объект, сделайте это с помощью ссылки, а не напрямую.
Объект может иметь любое количество ссылок, но ссылка может указывать только на один объект за раз.
class Car {
void test() {
Car car1 = new Car(); // (1)
Car car2 = new Car(); // (2)
car2 = car1;
/**
Says that car2 should point to where car1 points, so now both points to first object of Car
But for this car2 has to loose its current object-(2), making it an Abandoned object (An object with no active reference from the stack).
**/
}
}