What is a Class?

This article is under Attribution 4.0 International.

In the real world, you’ll often find many individual objects all of the same kind. A class can contain fields and methods to describe the behavior of an object. Here’s an example to help you understand better: There are different kinds of cats: white cats, black cats, Totoro, Persian cat and many other kinds… All of these are cats; and black, white and other words are just the properties of a cat. So cats can be a class, and when you give different traits to a template (the cat as a class), you create an object.

Real-world objects share two characteristics: They all have state and behavior. Dogs have state (name, color, breed, hungry) and behavior (barking, fetching, wagging tail). Bicycles also have state (current gear, current pedal cadence, current speed) and behavior (changing gear, changing pedal cadence, applying brakes). Identifying the state and behavior for real-world objects is a great way to begin thinking in terms of object-oriented programming.

The following Bicycle class is one possible implementation of a bicycle:

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);

The syntax of the Java programming language will look new to you, but the design of this class is based on the previous discussion of bicycle objects. The fields cadence, speed, and gear represent the object’s state, and the methods (changeCadence, changeGear, speedUp etc.) define its interaction with the outside world.

You may have noticed that the Bicycle class does not contain a main method. That’s because it’s not a complete application; it’s just the blueprint for bicycles that might be used in an application. The responsibility of creating and using new Bicycle objects belongs to some other class in your application.

Here’s a BicycleDemo class that creates two separate Bicycle objects and invokes their methods:

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


The output of this test prints the ending pedal cadence, speed, and gear for the two bicycles:

cadence:50 speed:10 gear:2 

cadence:40 speed:20 gear:3


Warning: This is a learning material and contains multipal types of contents, please contact us before you redistribute this work! Every citation must clearly tell the source:

“What is a Class” is an article published on SciShare.Online site, the reference number is CS-JAVA-CODE-03