Skip to main content

Understanding Inheritance in Java

 


Inheritance is one of the fundamental concepts of Object-Oriented Programming (OOP) in Java. It allows a new class (child or subclass) to inherit the properties and behaviors (fields and methods) of an existing class (parent or superclass). This promotes code reuse and establishes a natural hierarchical relationship between classes.

Types of Inheritance in Java

  1. Single Inheritance: A class inherits from one superclass.
  2. Multilevel Inheritance: A class inherits from another class, which in turn inherits from another class.
  3. Hierarchical Inheritance: Multiple classes inherit from one superclass.

    Note: Java does not support multiple inheritance (a class inheriting from more than one class) directly to avoid complexity and ambiguity. However, it can be achieved using interfaces.

Examples of Inheritance

Single Inheritance

In single inheritance, a class inherits from one superclass.

// Parent class class Vehicle { String brand = "Ford"; void honk() { System.out.println("Beep! Beep!"); } } // Child class class Car extends Vehicle { String model = "Mustang"; void display() { System.out.println("Brand: " + brand + ", Model: " + model); } public static void main(String[] args) { Car car = new Car(); car.honk(); // Output: Beep! Beep! car.display(); // Output: Brand: Ford, Model: Mustang } }

Multilevel Inheritance

In multilevel inheritance, a class inherits from another class, which in turn inherits from another class.

Example:

// Base class class Animal { void eat() { System.out.println("Eating..."); } } // Derived class class Dog extends Animal { void bark() { System.out.println("Barking..."); } } // Further derived class class Puppy extends Dog { void weep() { System.out.println("Weeping..."); } public static void main(String[] args) { Puppy puppy = new Puppy(); puppy.eat(); // Output: Eating... puppy.bark(); // Output: Barking... puppy.weep(); // Output: Weeping... } }

Hierarchical Inheritance

In hierarchical inheritance, multiple classes inherit from one superclass.

Example:

// Superclass class Animal { void eat() { System.out.println("Eating..."); } } // Subclass 1 class Dog extends Animal { void bark() { System.out.println("Barking..."); } } // Subclass 2 class Cat extends Animal { void meow() { System.out.println("Meowing..."); } public static void main(String[] args) { Dog dog = new Dog(); Cat cat = new Cat(); dog.eat(); // Output: Eating... dog.bark(); // Output: Barking... cat.eat(); // Output: Eating... cat.meow(); // Output: Meowing... } }

Method Overriding in Inheritance

Method overriding occurs when a subclass provides a specific implementation for a method already defined in its superclass. The subclass method should have the same name, return type, and parameters.

Example:

class Animal { void sound() { System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override void sound() { System.out.println("Dog barks"); } public static void main(String[] args) { Animal animal = new Dog(); animal.sound(); // Output: Dog barks } }

The super Keyword

The super keyword in Java is used to refer to the immediate parent class object. It can be used to access parent class methods, constructors, and fields.

Example:

class Animal { String color = "white"; void eat() { System.out.println("Animal is eating"); } } class Dog extends Animal { String color = "black"; void displayColor() { System.out.println("Dog color: " + color); // Output: black System.out.println("Animal color: " + super.color); // Output: white } @Override void eat() { super.eat(); // Calling parent class method System.out.println("Dog is eating"); } public static void main(String[] args) { Dog dog = new Dog(); dog.displayColor(); dog.eat(); // Output: // Animal is eating // Dog is eating } }

Constructor Chaining

Constructor chaining refers to the process of calling one constructor from another constructor using the this() or super() keywords.

Example:

class Animal { Animal() { System.out.println("Animal is created"); } } class Dog extends Animal { Dog() { super(); // Calls the parent class constructor System.out.println("Dog is created"); } public static void main(String[] args) { Dog dog = new Dog(); // Output: // Animal is created // Dog is created } }

Comments

Popular posts from this blog

String Function

  package StringLearning; class Display { public static void print (String s) { System. out .println(s); } } public class StringFunc { public static void main (String[] args) { String s = "Java Programming" ; // Display original string Display. print (s); // Converts all characters to lower case Display. print ( "LowerCase: " + s.toLowerCase()); // Converts all characters to upper case Display. print ( "UpperCase: " + s.toUpperCase()); // Concatenates the specified string to the end of the original string Display. print ( "Concatenation: " + s.concat( " is easy." )); // Replaces each occurrence of a character with a new character Display. print ( "Replace 'a' with 'b': " + s.replace( 'a' , 'b' )); // Replaces each occurrence of a substring with a new substring Displ...

Understanding Access Modifier

Java Program package LAB_Report; /* 2. Write a program in Java to demonstrate the usage of access modifiers: public, private, protected and default. */ class AccessModifier{ int defaultValue ; // this is visible within the package only public int publicValue ; // this is visible everywhere protected int protectedValue ; // this is visible within the package and subclasses private int privateValue ; // this is visible within the class only public void setPrivateValue ( int privateValue) { this . privateValue = privateValue; } public int getPrivateValue () { return privateValue ; } } class AccessModifierProtected extends AccessModifier{ public void setValue ( int value2){ this . protectedValue = value2; } public int getValue2 (){ return protectedValue ; } } public class Lab_2 { public static void main (String[] args) { AccessModifier am = new AccessModifier(); ...

Understanding Objects, Classes, and Instance Variables in Programming

What is an Object? An object is an entity that possesses both state and behavior. In simple terms, an object is an instance of a class. It encapsulates the properties (state) and functionalities (behavior) defined by its class.  Example: Object: Pencil State:   Name: Ballpoint   Color: Black Behavior:   - To write  What is a Class? A class is a blueprint for creating objects. It defines a set of properties and methods that the created objects will have. Think of a class as a template that outlines what an object will be like. Components of a Class: Fields: Variables to store data. Methods: Functions to define behaviors. Constructors: Special methods to initialize objects. Blocks: Code blocks for initialization. Nested Class and Interface: Classes or interfaces defined within another class Instance Variables Instance variables are variables declared within a class but outside any method. They are specific to each object created from the class. Unlike static varia...