В реальном мире вы найдете множество отдельных объектов одного и того же типа. Могут существовать тысячи других велосипедов, все одинаковой марки и модели. Каждый велосипед был построен на основе одного и того же набора чертежей и, следовательно, содержит одни и те же компоненты. В объектно-ориентированных терминах мы говорим, что ваш велосипед является экземпляром класса объектов, известного как велосипеды. Класс - это схема, на основе которой создаются отдельные объекты.
Следующий класс является одной из возможных реализаций велосипеда:
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
Поля cadence, speed и gear представляют состояние объекта, а методы (changeCadence, changeGear, speedUp и т.д.) определяют его взаимодействие с внешним миром.
Возможно, вы заметили, что Bicycle класс не содержит main метода. Это потому, что это не полноценное приложение; это всего лишь схема велосипеда, которая может быть использована в приложении. Ответственность за создание и использование новых Bicycle объектов принадлежит какому-либо другому классу в вашем приложении.
Вот класс, который создает два отдельных Bicycle объекта и вызывает их методы:
class BicycleDemo {
public static void main(String[] args) {
// Create two different
// Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Invoke methods on
// those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
На выходе этого теста выводятся конечные значения частоты вращения педалей, скорости и передачи для двух велосипедов:
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3