Создайте пакет vehicles
, который будет содержать классы Car
и Electric Car
и пакет app, в котором будет находиться основной класс с методом main. Добавьте в класс Car
приватные поля (private) ownerName
и insuranceNumber
. Создайте методы доступа (геттеры и сеттеры) для полей ownerName
и insuranceNumber
. Добавьте поле engineType
с модификатором доступа protected и создайте методы доступа к этому полю.
Создайте новый класс Electric Car
, который наследует класс Car
, и добавьте в него поле batteryCapacity
. В классе Electric Car
используйте поле engineType
, чтобы задать тип двигателя как "Electric". Проверьте работу инкапсуляции и наследования, создав объекты классов Car
и Electric Car
и продемонстрируйте доступ к полям с разными модификаторами.
Ваша программа должна быть организована по пакетам:
- Пакет
vehicles
для классовVehicle
,Car
,Electric Car
- Пакет app для тестового класса
Test Car
.
Используя программу, выполненную во 2 и 3 практических работах, внести следующие изменения:
- Добавить абстрактный класс
Vehicle
, который будет представлять общие свойства всех транспортных средств. В этот класс включите следующие общие поля для транспортных средств: model (модель);license
(номерной знак);color
(цвет);year
(год выпуска);ownerName
(имя владельца);insuranceNumber
(страховой номер);engineType
(тип двигателя, поле должно быть защищённым для наследования). Определите абстрактный методvehicleType()
, который будет возвращать тип транспортного средства. Добавьте методы для получения и изменения значений полей (геттеры и сеттеры). - Изменить класс
Car
, чтобы он наследовалVehicle
. Реализуйте абстрактный методvehicleType()
, чтобы он возвращал "Car
". В конструкторе классаCar
используйте поля и методы родительского класса. - Изменить класс
Electric Car
, чтобы он наследовалCar
. Добавьте в класс полеbatteryCapacity
(емкость аккумулятора) и методы для работы с ним. Реализуйте методvehicleType()
, который будет возвращать "Electric Car". Используйте protected-полеengineType
для установки значения "Electric" в классеElectric Car
. - Использовать полиморфизм в тестовом классе для работы с объектами
Car
иElectric Car
через ссылки на родительские классы. Создайте объектыCar
иElectric Car
, измените их свойства с помощью сеттеров, и выведите информацию на экран с помощью методаtoString()
. - Включить инкапсуляцию: убедитесь, что поля каждого класса имеют доступ через методы (геттеры и сеттеры), а не напрямую.