fixed code display and translation issues (#22286)
This commit is contained in:
committed by
Gregory Gubarev
parent
8192a989af
commit
dfcf25126e
@@ -2,25 +2,47 @@
|
||||
title: Abstract Classes in Java
|
||||
localeTitle: Абстрактные классы в Java
|
||||
---
|
||||
Давайте обсудим абстрактные классы. Прежде чем погрузиться в этот учебник, вам лучше понять понятия классов и наследование.
|
||||
Давайте обсудим абстрактные классы. Прежде чем приступить к этому уроку, вам необходимо хорошо разобраться в понятиях класс и наследование.
|
||||
|
||||
Абстрактные классы - это классы, которые могут быть подклассифицированы (т.е. расширены), но не могут быть созданы. Вы можете думать о них как о **классе** интерфейсов, или как о интерфейсе с фактическим кодом, привязанным к методам.
|
||||
Абстрактные классы - это классы, которые могут быть унаследованы (т.е. расширены, ключевое слово **extends**), но не могут быть проинициализированы (созданы). Их можно представить как **классовую версию** интерфейса, или думать о них как о интерфейсе, в методах которого присутствует код.
|
||||
|
||||
Рассмотрим следующий пример, чтобы понять абстрактные классы: У вас есть класс Vehicle, который определяет определенные базовые функции (методы) и определенные компоненты (объектные переменные), которые должны иметь машины, чтобы их классифицировали как транспортное средство. Вы не можете создать объект транспортного средства, потому что само транспортное средство является абстрактным понятием. Однако вы можете расширить функциональность класса автомобиля, чтобы создать автомобиль или мотоцикл.
|
||||
Чтобы понять абстрактные классы рассмотрим следующий пример: У вас есть класс Vehicle, который определяет определенные базовые функции (методы) и определенные компоненты (поля объекта), которые должны иметь машины, чтобы их классифицировали как транспортное средство. Вы не можете создать объект транспортного средства, потому что само транспортное средство является абстрактным понятием. Однако вы можете расширить функциональность класса автомобиля, чтобы создать автомобиль или мотоцикл.
|
||||
|
||||
\`\` \`java абстрактный класс Автомобиль { // переменная, которая используется для объявления no. колес в транспортном средстве частные внутренние колеса;
|
||||
``` java
|
||||
//абстрактный класс ТранспортноеСредство
|
||||
abstract class Vehicle
|
||||
{
|
||||
//переменная, показывающая количество колес у траспортного средства
|
||||
private int wheels;
|
||||
|
||||
//переменная, определяющая тип мотора
|
||||
private Motor motor;
|
||||
|
||||
//переменная, которая объявляет, но не определяет старт транспортного средства
|
||||
//по причине того, что каждое транспортное средство использует разные механизмы
|
||||
abstract void start();
|
||||
}
|
||||
|
||||
// Переменная для определения типа используемого двигателя частный моторный двигатель;
|
||||
//класс Автомобиль наследует ТранспортноеСредство
|
||||
public class Car extends Vehicle
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
// абстрактный метод, который только объявляет, но не определяет начало // функциональность, поскольку каждый автомобиль использует другой пусковой механизм abstract void start (); }
|
||||
|
||||
Открытый автомобиль { ... }
|
||||
|
||||
Общественный класс Мотоцикл расширяет автомобиль { ... }
|
||||
//класс Мотоцикл наследует ТранспортноеСредство
|
||||
public class Motorcycle extends Vehicle
|
||||
{
|
||||
...
|
||||
}
|
||||
```
|
||||
You cannot create an object of Vehicle class anywhere in your program. You can however, extend the abstract vehicle class and create objects of the child classes;
|
||||
Вы не можете создать объект класса ТранспортноеСредство в вашей программе. Однако, Вы можете унаследовать этот абстрактный класс и создать объект классов его наследников.
|
||||
|
||||
``` java
|
||||
Vehicle newVehicle = new Vehicle(); // неверно, т.к. невозможно создать объект абстрактного класа
|
||||
Vehicle car = new Car(); // верно
|
||||
Vehicle mBike = new Motorcycle(); // верно
|
||||
|
||||
Car carObj = new Car(); // верно
|
||||
Motorcycle mBikeObj = new Motorcycle(); // верно
|
||||
```
|
||||
|
||||
Ява Автомобиль newVehicle = новый автомобиль (); // Недействительным Автомобиль car = новый автомобиль (); // действительный Автомобиль mBike = новый мотоцикл (); // действительный
|
||||
|
||||
Автомобиль carObj = новый автомобиль (); // действительный Мотоцикл mBikeObj = новый мотоцикл (); // действительный \`\` \`
|
||||
Если дочерний класс не реализует методы родительского абстрактного класса, этот дочерний класс становится также абстрактным.
|
||||
|
Reference in New Issue
Block a user