top

Search

Java Tutorial

.

UpGrad

Java Tutorial

Java Classes and Objects

Introduction: Stepping into the World of Java

Java is a widely-used programming language. It is lauded for its ability to create flexible and scalable applications. Central to this language is the concept of "Java Classes and Objects". These foundational principles, crucial to mastering Java, facilitate better code organization and reusability.

Overview: A Panoramic View of Java Class and Objects

The Java programming language is built on the principles of Object-Oriented Programming (OOP). This model organizes software design around data, or objects, rather than functions and logic. An object can be defined as a data field with unique attributes and behavior. Java classes, on the other hand, are templates used to create objects.

The Concept of Java Classes and Objects: Unraveling the Java Code: Class and Objects

In Java, the foundational building blocks are Classes and Objects. A class, much like an architectural blueprint, sets a structure that can be followed. It lays out a framework, dictating the behavior and state that objects created from the class will have.

Whereas “Objects” are instances of a class. Each object is an entity in itself, possessing its own state and behavior, as defined by the class. Understanding this interrelation between classes and objects is vital to mastering Java.

Classes And Objects In Java Example Programs

// Define a 'Car' class
class Car {
    // Attributes of the class
    String brand;
    String model;
    int year;
    double price;


    // Constructor to initialize the object
    Car(String brand, String model, int year, double price) {
        this.brand = brand;
        this.model = model;
        this.year = year;
        this.price = price;
    }


    // Method to display car details
    void displayDetails() {
        System.out.println("Brand: " + this.brand);
        System.out.println("Model: " + this.model);
        System.out.println("Year: " + this.year);
        System.out.println("Price: $" + this.price);
    }
}


// Main class
public class Main {
    public static void main(String[] args) {
        // Create an object of the 'Car' class
        Car car1 = new Car("Toyota", "Camry", 2020, 24000.00);


        // Call the method to display details
        car1.displayDetails();
    }
}

In this example, we've defined a ‘Car’ class with attributes for brand, model, year, and price. We've also created a constructor to initialize these attributes when we create a ‘Car’ object, and a method ‘displayDetails()’ to print out the details of the car.

In the ‘main()’ method, we create an object ‘car1’ of the ‘Car’ class, passing values to the constructor. We then call the ‘displayDetails()’ method on ‘car1’ to print out its details.

When you run this program, it should output:

What is Class in Java with Examples: Demystifying Java Class 

In Java, a class is a blueprint from which individual objects can be constructed. It comprises a Class Name, Body, and Types of Classes. Let's examine each of these in detail.

Class Name

In Java, a class name is a label given to a class. For instance, consider ‘public class Car’. Here, 'Car' is the class name.

Body of the Class

The body of the class, enclosed within curly braces {}, contains all the variables and methods. For example: 

public class Car {
// variables
String color;
String model;
// methods
void start() {
// some code
}
void stop() {
// some code
 }
}

Types of Classes

In Java, there are many sorts of classes:

  • Built-in Classes: Java offers a plethora of pre-defined or built-in classes, like System, String, Scanner, etc., that you can use in your code.

  • User-Defined Classes: These are the classes created by a programmer. Our Car class example is a user-defined class.

  • Concrete Class: A concrete class in Java is a class that has an implementation for all its methods. It can be instantiated and cannot have any abstract method. Our Car class example is a concrete class.

  • Abstract Class: An abstract class in Java, marked by the ‘abstract’ keyword, cannot be instantiated and can have abstract and non-abstract methods. For example:

abstract class Vehicle {
abstract void run();
}

Bridging Connections: Interfaces in Java

Interfaces in Java play a key role in establishing a contract for what a class can do, without saying anything about how the class will do it. They ensure that a class adheres to a certain contract, without caring about the class's inheritance hierarchy.

interface Playable {
void playMusic();
}

In this example, ‘Playable’ is an interface that declares a method named ‘playMusic()’. Any class implementing ‘Playable’ will have to provide an implementation for the ‘playMusic()’ method.

Crafting Code: Creating a Class in Java

Creating a class in Java is akin to crafting a blueprint for a type of object. It involves defining the class name and the class body which includes variables (state) and methods (behavior).

Here's a simple example to show creating a class:

public class Dog {
    // Class variables or properties
    String name;
    String breed;
    int age;


    // Class methods or behaviors
    public void bark() {
        System.out.println("Woof!");
    }


    public void sleep() {
        System.out.println("Zzz...");
    }


    public void eat() {
        System.out.println("Yum!");
    }


    public static void main(String[] args) {
        // Create an object of the 'Dog' class
        Dog myDog = new Dog();


        // Set dog attributes
        myDog.name = "Buddy";
        myDog.breed = "Golden Retriever";
        myDog.age = 3;


        // Call methods to make the dog bark, sleep, and eat
        myDog.bark();
        myDog.sleep();
        myDog.eat();
    }
}

In this example, we've created a ‘Dog’ class, defined by the keyword ‘class’. This ‘Dog’ class has three properties (‘name’, ‘breed’, and ‘age’) and three behaviors (‘bark()’, ‘sleep()’, and ‘eat()’).

These properties and behaviors are the characteristics of any ‘Dog’ object created from this class.

Java Objects

Objects in Java are fundamental components that represent real-world entities. Each object has an identity, state, and behavior. Let's examine these attributes.

Identity

An object's identity is akin to a person's DNA; it's unique and distinguishes it from other objects, even if their states and behaviors are identical. In Java, this identity is provided by the JVM in the form of a unique memory location, not usually manipulated directly in your code.

State

The state of an object is represented by its attributes or fields, essentially the data stored within the object. For instance, if we have a ‘Dog’ class, the state could include attributes like ‘breed’‘size’‘age’, and ‘color’.

Behavior

The behavior of an object is depicted by its methods. These are actions the object can perform, often operating on the object's state. For example, a ‘Dog’ object could have behaviors such as ‘bark()’, ‘eat()’, and ‘sleep()’.

Here's a simple example to illustrate a Java object:

public class Dog {
    // State Of Dog
    String breed;
    String size;
    int age;
    String color;


    // Behavior
    void bark() {
        // Some code for barking behavior
    }


    void eat() {
        // Some code for eating behavior
    }


    void sleep() {
        // Some code for sleeping behavior
    }


    public static void main(String[] args) {
        // Create a new Dog object
        Dog myDog = new Dog();
        // Initialize the dog's attributes
        myDog.breed = "Labrador";
        myDog.size = "Large";
        myDog.age = 3;
        myDog.color = "Golden";


        // Perform some actions on the dog
        myDog.bark();
        myDog.eat();
        myDog.sleep();
    }
}

In this code, ‘myDog’ is an object of the class ‘Dog’. It has its own state (breed, size, age, color) and behavior (bark, eat, sleep).

How To Create an Object in Java: Examples

Creating an object in Java is a two-step process. Let's use our previously discussed Dog class to create a Dog object:

  1. Declaration: This is where we declare a variable of a class type. Here, we only create a reference to an object. We aren't creating an actual object that takes up space yet. For example:

Dog myDog ;

In this line of code, we declare a ‘Dog’ object called ‘myDog’.

  1. Instantiation and Initialization: The new keyword is used to create the object and ‘new Dog()’ instantiates the object. Initialization happens when we assign values to the object's properties:

myDog = new Dog();


Now, ‘myDog’ is an object of the ‘Dog’ class. You can now use the dot syntax of class in Java to access fields and methods:

myDog.breed = "Labrador" ;
myDog.size = "Large" ;
myDog.age =5
myDog.Color = "Yellow" ;

Here, we're setting the state of the ‘myDog’ object. Remember, each object has its own state independent of the other objects.

Making a Statement: Declaring Objects in Java

Declaring objects in Java is a pivotal first step in the object lifecycle. This declaration doesn't create a new object, but instead prepares the way for an object to exist in memory.

Here's what it looks like to declare an object of a ‘Dog’ class:

Dog myDog ;

In this simple line of code, we're stating that ‘myDog’ is going to be an object of type ‘Dog’. However, it's worth noting that ‘myDog’ isn't an actual ‘Dog’ object yet—it's just a reference that can point to a ‘Dog’ object. In memory, it doesn't yet have the characteristics or behaviors defined in the ‘Dog’ class.

To actually create a ‘Dog’ object in memory, we need to instantiate the ‘Dog’ class using the ‘new’ keyword:

myDog = new Dog();

Now, ‘myDog’ is an instance of ‘Dog’, meaning it has all the characteristics and behaviors defined in the ‘Dog’ class.

Remember, object declaration and instantiation are separate steps in Java, although they can be done in the same line for convenience:

Dog myDog = new Dog();

Kickstarting Your Code: Initializing Objects in Java

Initializing objects in Java refers to the process of assigning initial values to the object's fields (or attributes). This is typically done at the time of object creation (though it can be done later) and ensures your object starts in a valid state.

You can initialize an object in Java in many ways:

  1. Direct Initialization

You can directly assign values to the object's fields:

Dog myDog = new Dog( ) ;
myDog.breed = "Labrador";
myDog.size = "Large" ;
myDog. Age = 5;
myDog.color = "Yellow";
  1. Initialization via Methods

You can use a method or function to initialize an object's fields:

public class Dog {
    String breed;
    String size;
    int age;
    String color;


    // Initialization method
    void initialize(String breed, String size, int age, String color) {
        this.breed = breed;
        this.size = size;
        this.age = age;
        this.color = color;
    }


    public static void main(String[] args) {
        // Creating and initializing the object
        Dog myDog = new Dog();
        myDog.initialize("Labrador", "Large", 5, "Yellow");
        
        // Print the dog's attributes
        System.out.println("Breed: " + myDog.breed);
        System.out.println("Size: " + myDog.size);
        System.out.println("Age: " + myDog.age);
        System.out.println("Color: " + myDog.color);
    }
}

Here, we've defined an ‘initialize’ method in the ‘Dog’ class. This method takes in parameters and assigns them to the object's fields. Note the use of ‘this’, which is a reference to the current object.

Diverse Pathways: Different Ways to Create Objects in Java

There are numerous methods for creating objects in Java.

  1. Using the 'new' Keyword

This is the most common method for creating objects. It involves declaring a variable of a class type, and then using the ‘new’ keyword to create the object:

Dog myDog = new Dog();
  1. Using Class.forName()

This method can be used when the name of the class is available at runtime. It returns the instance of ‘Class’ class which can be used to create objects:

class Dog {
    // Add necessary methods and attributes to the Dog class
    void bark() {
        System.out.println("Dog is barking");
    }


    void eat() {
        System.out.println("Dog is eating");
    }


    void sleep() {
        System.out.println("Dog is sleeping");
    }
}


public class Main {
    public static void main(String[] args) {
        try {
            Class<?> cls = Dog.class;
            Dog myDog = (Dog) cls.getDeclaredConstructor().newInstance();
            
            // Perform actions on myDog
            myDog.bark();
            myDog.eat();
            myDog.sleep();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  1. Using 'clone()' Method

The method creates and returns a copy of the object:

Dog myDog1 = new Dog();
Dog myDog2 ;
try {
myDog2 = (Dog) myDog1. clone() ;
} catch (CloneNotSupportedException e){
e. printStackTrace( ) ;
}
  1.  Using Object Deserialization

Object deserialization is the process of converting the serialized bytes back into a copy of the original object:

// Assumes myDog has been serialized to 'dog. ser' file
try {
FileInputStream file = new FileInputStream( "dog . set");
ObjectlnputStream in = new ObjectlnputStream(fi1e) ;
Dog myDog = (Dog) in. readObject() ;
in. close();
file. close( ) ;
} catch (IOException I ClassNotFoundException e) {
e. printStackTrace( ) ;
}
  1. Using the 'new' Instance Method

The ‘newInstance()’ method of ‘Constructor’ class is used to create and return a new instance of the constructor's declaring class, completed as if by a call to the constructor:

try {
Constructor<Dog> constructor = Dog.class.getConstructor();
Dog myDog= constructor.newlnstance();
} catch (NoSuchMethodException I InvocationTargetException |
InstantiationException I IllegalAccessException e) {
e.printStackTrace();
 }

Each of these methods suits different scenarios, and their usage depends on the requirements of your program.

Multiplying Efficiency: Creating Multiple Objects of a Single Type in Java

In Java, it's a common practice to create multiple objects of the same type, especially when you're dealing with collections of similar items.

For example, if we're dealing with a group of dogs, we might create multiple ‘Dog’ objects like this:

Dog dog1= new Dog();
Dog dog2= new Dog();
Dog dog3= new Dog();

Each ‘Dog’ object can have its own unique properties:

dog 1.breed = "Labrador";
dog1.age = 5;
dog1. Color = "Yellow";
dog2. Breed = "Beagle";
Dog2.age = 3;
dog2. color= "Tri-color";
dog3. breed = "Dalmatian";
dog3. Age = 4;
dog3.color = "Spotted White and Black" ;

In this way, we're able to maintain multiple unique ‘Dog’ objects, each with its own state and behaviors.

Decoding Differences: Java Classes vs Objects

In the realm of object-oriented programming, classes, and objects are two sides of the same coin. However, they play distinct roles in your code.


Class

Object

Definition

A class is a blueprint or template for an object.

An object is an instance of a class.

Logic

A class is a logical entity.

An object is a physical entity.

Existence

A class doesn't exist in memory when the program runs.

An object exists in memory when the program runs.

Fields

Fields within a class are the variables it contains.

Fields within an object store its state.

Modification

Changes to a class affect all its objects.

Changes to an object affect that object only.

Creation

Defined once in code.

Can be created many times based on the class.



Conclusion

As we've explored Java Classes and Objects, understanding classes and objects is key to mastering Java. Classes, as blueprints, provide the foundation for objects. Objects, as instances of classes, breathe life into your programs.

FAQs

  1. How does encapsulation relate to classes and objects in Java?

Encapsulation in Java is like putting data and related actions in a box. Classes are like these boxes that hold the data and actions together for objects. It helps keep things organized, secure, and prevents unwanted access to the internal data of objects.

  1. Can a class in Java have multiple constructors?

Yes, a class in Java can have different ways to create objects, which are called constructors. Each constructor provides a different way to initialize or set up the object, depending on the parameters or requirements you have.

  1. How can I achieve inheritance using classes and objects in Java?

Inheritance in Java allows a class to inherit the characteristics of another class. By extending a class, you can create a new class (child class) that inherits the properties and behaviors of an existing class (parent class). This helps with code reuse and creating a hierarchy of classes.

  1. What is the significance of the "static" keyword when used with class members in Java?

When you use the "static" keyword with class members, like variables or methods, it means they belong to the class itself, rather than individual objects. It's like a shared resource that all objects of the class can access and use. You don't need to create an object to access static members, and they are handy for utility functions or data shared across objects of the class.

Leave a Reply

Your email address will not be published. Required fields are marked *