Что такое объект (или экземпляр)?
Вернемся к нашему чертежу машины. Если класс – это чертеж, то объект (или экземпляр) – это конкретная машина, построенная по этому чертежу.
Вы можете построить несколько разных машин по одному и тому же чертежу: одна – гоночная и красная, другая – грузовая и синяя. Аналогично, из одного класса можно создать множество объектов.
Объект – это конкретная сущность в памяти компьютера, созданная по описанию класса. Она имеет конкретные значения атрибутов и может выполнять методы.
Создание объектов (экземпляров) класса Car
namespace Lecture1;
class Program
{
static void Main(string[] args)
{
// Создаем два объекта (экземпляра) класса Car
var myCar = new Car("красный", "Tesla Model S");
var yourCar = new Car("синий", "Toyota Camry");
// Каждый объект имеет свои собственные атрибуты
Console.WriteLine(myCar.Color); // Выведет: красный
Console.WriteLine(yourCar.Model); // Выведет: Toyota Camry
// И может выполнять методы
myCar.StartEngine(); // Выведет: Двигатель запущен!
yourCar.Drive(); // Выведет: Сначала заведи двигатель!
}
}
int main() {
// Создаём два объекта (экземпляра) класса Car – прямо на стеке
Car my_car("красный", "Tesla Model S");
Car your_car("синий", "Toyota Camry");
// Каждый объект имеет свои собственные атрибуты
std::cout << my_car.color() << std::endl; // Выведет: красный
std::cout << your_car.model() << std::endl; // Выведет: Toyota Camry
// И может выполнять методы
my_car.StartEngine(); // Выведет: Двигатель запущен!
your_car.Drive(); // Выведет: Сначала заведи двигатель!
return 0;
}
func main() {
// Создаём два объекта (экземпляра) типа Car
myCar := NewCar("красный", "Tesla Model S")
yourCar := NewCar("синий", "Toyota Camry")
// У каждого объекта свои собственные значения полей
fmt.Println(myCar.Color) // Выведет: красный
fmt.Println(yourCar.Model) // Выведет: Toyota Camry
// И может выполнять методы
myCar.StartEngine() // Выведет: Двигатель запущен!
yourCar.Drive() // Выведет: Сначала заведи двигатель!
}
# Создаем два объекта (экземпляра) класса Car
my_car = Car("красный", "Tesla Model S")
your_car = Car("синий", "Toyota Camry")
# Каждый объект имеет свои собственные атрибуты
print(my_car.color) # Выведет: красный
print(your_car.model) # Выведет: Toyota Camry
# И может выполнять методы
my_car.start_engine() # Выведет: Двигатель запущен!
your_car.drive() # Выведет: Сначала заведи двигатель!
// Создаём два объекта (экземпляра) класса Car
const myCar = new Car("красный", "Tesla Model S");
const yourCar = new Car("синий", "Toyota Camry");
// Каждый объект имеет свои собственные атрибуты
console.log(myCar.color); // Выведет: красный
console.log(yourCar.model); // Выведет: Toyota Camry
// И может выполнять методы
myCar.startEngine(); // Выведет: Двигатель запущен!
yourCar.drive(); // Выведет: Сначала заведи двигатель!
public class Program {
public static void main(String[] args) {
// Создаём два объекта (экземпляра) класса Car
Car myCar = new Car("красный", "Tesla Model S");
Car yourCar = new Car("синий", "Toyota Camry");
// Каждый объект имеет свои собственные атрибуты
System.out.println(myCar.getColor()); // Выведет: красный
System.out.println(yourCar.getModel()); // Выведет: Toyota Camry
// И может выполнять методы
myCar.startEngine(); // Выведет: Двигатель запущен!
yourCar.drive(); // Выведет: Сначала заведи двигатель!
}
}
fun main() {
// Создаём два объекта (экземпляра) класса Car
val myCar = Car("красный", "Tesla Model S")
val yourCar = Car("синий", "Toyota Camry")
// Каждый объект имеет свои собственные атрибуты
println(myCar.color) // Выведет: красный
println(yourCar.model) // Выведет: Toyota Camry
// И может выполнять методы
myCar.startEngine() // Выведет: Двигатель запущен!
yourCar.drive() // Выведет: Сначала заведи двигатель!
}
Основное отличие класса от объекта
| Класс | Объект (Экземпляр) |
|---|---|
| Это шаблон, описание или концепция. | Это конкретная реализация класса. |
| Это абстракция (как “Автомобиль вообще”). | Это конкретная сущность (как “Мой красный Tesla”). |
| Объявляется один раз. | Создается много раз на основе одного класса. |
| Не занимает память до создания объектов. | Занимает память при своем создании. |
Простая аналогия: Класс CookieCutter – это формочка для печенья. Объекты cookie1, cookie2 – это сами печенья, сделанные с помощью этой формочки.
Итог: Класс – это общая идея, а объект – ее материальное воплощение. Понимание этой разницы – ключ к освоению объектно-ориентированного программирования. Вы создаете классы, чтобы описать сущности вашего мира, и создаете объекты этих классов, чтобы работать с ними в вашей программе.