Skip to content

Lesson 2: Creating Classes and Objects in Java

Overview:

In Lesson 2, we explore the process of creating classes and objects in Java, essential components of object-oriented programming. We’ll dive into the role of constructors and methods within classes, understanding how they contribute to the functionality and behavior of objects.

Key Concepts:

  1. Creating Classes:
    • Definition: A class is a blueprint for creating objects. It defines the attributes (fields) and behaviors (methods) that the objects of the class will have.
    • Purpose: Classes enable code organization, encapsulation, and the creation of reusable and modular components.
// Example of a simple class
public class Car {
    // Attributes
    String make;
    String model;
    int year;

    // Constructor
    public Car(String make, String model, int year) {
        this.make = make;
        this.model = model;
        this.year = year;
    }

    // Method
    public void start() {
        System.out.println("The car is starting.");
    }
}

Creating Objects:

  • Definition: Objects are instances of classes. They represent real-world entities and encapsulate data and behavior.
  • Purpose: Objects allow us to interact with and manipulate data using the defined methods and attributes of a class.
// Creating objects of the Car class
Car myCar = new Car("Toyota", "Camry", 2022);
Car anotherCar = new Car("Ford", "Mustang", 2023);

Constructors:

  • Definition: Constructors are special methods in a class used for initializing objects. They have the same name as the class and are called when an object is created.
  • Purpose: Constructors ensure that objects are properly initialized with default or provided values.
// Constructor example in the Car class
public Car(String make, String model, int year) {
    this.make = make;
    this.model = model;
    this.year = year;
}

Methods:

  • Definition: Methods are functions defined within a class. They represent the behavior of objects and can perform various actions or return values.
  • Purpose: Methods allow us to encapsulate functionality within a class and provide a way to interact with the object.
// Method example in the Car class
public void start() {
    System.out.println("The car is starting.");
}

Example:

Let’s create a program that utilizes the Car class we defined earlier. We’ll create objects of the Car class, use the constructor to initialize them, and invoke the start method.

public class CarExample {

    public static void main(String[] args) {

        // Creating objects of the Car class
        Car myCar = new Car("Toyota", "Camry", 2022);
        Car anotherCar = new Car("Ford", "Mustang", 2023);

        // Accessing attributes
        System.out.println("My car: " + myCar.make + " " + myCar.model + " " + myCar.year);

        // Invoking methods
        myCar.start();
        anotherCar.start();
    }
}

In this example, we create two Car objects using the constructor and then access their attributes and invoke the start method. This demonstrates the fundamental concepts of creating classes, objects, constructors, and methods in Java. As you progress, you’ll build on these concepts to create more complex and sophisticated programs.

Let’s expand on the previous example by adding more methods to the Car class and demonstrating how to interact with the objects.

// Car class with additional methods
public class Car {
    // Attributes
    private String make;
    private String model;
    private int year;
    private boolean isEngineRunning;

    // Constructor
    public Car(String make, String model, int year) {
        this.make = make;
        this.model = model;
        this.year = year;
        this.isEngineRunning = false;
    }

    // Getter methods
    public String getMake() {
        return make;
    }

    public String getModel() {
        return model;
    }

    public int getYear() {
        return year;
    }

    public boolean isEngineRunning() {
        return isEngineRunning;
    }

    // Method to start the car
    public void start() {
        if (!isEngineRunning) {
            System.out.println(make + " " + model + " is starting.");
            isEngineRunning = true;
        } else {
            System.out.println(make + " " + model + " is already running.");
        }
    }

    // Method to stop the car
    public void stop() {
        if (isEngineRunning) {
            System.out.println(make + " " + model + " is stopping.");
            isEngineRunning = false;
        } else {
            System.out.println(make + " " + model + " is already stopped.");
        }
    }

    // Method to display car information
    public void displayInfo() {
        System.out.println("Car Information:");
        System.out.println("Make: " + make);
        System.out.println("Model: " + model);
        System.out.println("Year: " + year);
        System.out.println("Engine Running: " + isEngineRunning);
    }
}

Now, let’s modify the CarExample class to demonstrate the use of the additional methods:

public class CarExample {

    public static void main(String[] args) {

        // Creating objects of the Car class
        Car myCar = new Car("Toyota", "Camry", 2022);
        Car anotherCar = new Car("Ford", "Mustang", 2023);

        // Invoking methods
        myCar.start();          // Start the car
        anotherCar.start();     // Start another car

        myCar.displayInfo();    // Display information about my car

        myCar.stop();           // Stop the car
        anotherCar.stop();      // Stop another car

        anotherCar.displayInfo();  // Display information about another car
    }
}

In this extended example, we added two additional methods to the Car class: stop to stop the car and displayInfo to display information about the car. The CarExample class demonstrates how to create objects, invoke methods, and interact with the state of the Car objects.