Основною обʼєктно-орієнтованою конструкцією в Java є клас, який поєднує дані (поля) і поведінку (методи). Поля й методи класу називають його членами.
Доступ до членів можна контролювати за допомогою модифікаторів доступу, з яких два найпоширеніші:
public: до члена може звертатися будь-який код (без обмежень).private: до члена може звертатися лише код у тому самому класі.Клас можна уявити як шаблон для створення екземплярів цього класу.
Щоб створити екземпляр класу (його ще називають обʼєктом), використовують ключове слово new:
class Car {
}
// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();
Поля мають тип і назву (її записують у camelCase) і можуть бути визначені будь-де в класі (за домовленістю їх записують у PascalCase):
class Car {
// Accessible by anyone
public int weight;
// Only accessible by code in this class
private String color;
}
Полю можна за бажанням присвоїти початкове значення. Якщо поле не задає початкового значення, йому встановлюється типове значення його типу. Значення полів екземпляра можна читати й оновлювати через точкову нотацію.
class Car {
// Will be set to specified value
public int weight = 2500;
// Will be set to default value (0)
public int year;
}
Car newCar = new Car();
newCar.weight; // => 2500
newCar.year; // => 0
// Update value of the field
newCar.year = 2018;
Приватні поля зазвичай оновлюють як побічний ефект виклику методу.
Такі методи зазвичай не повертають жодного значення, і тоді типом повернення має бути void:
class CarImporter {
private int carsImported;
public void importCars(int numberOfCars)
{
// Update private field from public method
carsImported = carsImported + numberOfCars;
}
}
У цій вправі ми будемо гратися з радіокерованою машинкою, на яку ми нарешті назбирали грошей, щоб купити.
Машинки починають із повним (100%) зарядом батареї. Щоразу, коли ми керуємо машинкою з пульта, вона проїжджає 20 метрів і витрачає один відсоток заряду батареї.
Радіокерована машинка має вишуканий світлодіодний дисплей, який показує дві частини інформації:
"Driven <METERS> meters"."Battery at <PERCENTAGE>%".Якщо заряд батареї сягає 0%, ми більше не можемо керувати машинкою, і дисплей батареї покаже "Battery empty".
На нас чекає шість завдань, кожне з яких працюватиме з екземплярами радіокерованої машинки.
Реалізуйте (стат) JedliksToyCar.buy() метод, який повертає новісінький екземпляр радіокерованої машинки:
JedliksToyCar car = JedliksToyCar.buy();
Реалізуйте метод JedliksToyCar.distanceDisplay(), який повертає відстань у тому вигляді, як її показано на світлодіодному дисплеї:
JedliksToyCar car = JedliksToyCar.buy();
car.distanceDisplay();
// => "Driven 0 meters"
Реалізуйте метод JedliksToyCar.batteryDisplay(), який повертає відсоток заряду батареї у тому вигляді, як його показано на світлодіодному дисплеї:
JedliksToyCar car = JedliksToyCar.buy();
car.batteryDisplay();
// => "Battery at 100%"
Реалізуйте метод JedliksToyCar.drive(), який оновлює кількість пройдених метрів:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.distanceDisplay();
// => "Driven 40 meters"
Оновіть метод JedliksToyCar.drive() так, щоб він оновлював відсоток заряду батареї:
JedliksToyCar car = JedliksToyCar.buy();
car.drive();
car.drive();
car.batteryDisplay();
// => "Battery at 98%"
Оновіть метод JedliksToyCar.drive() так, щоб він не збільшував пройдену відстань і не зменшував відсоток заряду батареї, коли батарея розряджена (0%):
JedliksToyCar car = JedliksToyCar.buy();
// Drain the battery
// ...
car.distanceDisplay();
// => "Driven 2000 meters"
car.batteryDisplay();
// => "Battery empty"
Зареєструйтеся на Exercism, щоб вивчати й опановувати Java, а також 26 концепцій158 вправ та справжнє наставництво від людей, і все це безкоштовно.