Inheritance in Java

Inheritance describes the parent child relationship between two classes.

A class can get some of its characteristics from a parent class and then add more unique features of its own. For example, consider a Vehicle parent class and a child class Car. Vehicle class will have properties and functionalities common for all vehicles. Car will inherit those common properties from the Vehicle class and then add properties which are specific to a car.

In the above example, Vehicle parent class is known as base class or superclass. Car is known as derived class, Child class or subclass.

 

Defining inheritance

We can use the keyword extends, for a class to inherit another class or an interface to inherit another interface. We can use the implements keyword to implement an interface. You can find more details in the abstraction and interface notes.

 

Example

We will define a parent class with name Parent, child class with name Child and a test class with name InheritanceExample.

class Parent {

	private int i;
	public int j;

	Parent(int i, int j) {
		this.i = i;
		this.j = j;
	}

	void printIJ() {
		System.out.println(i + " " + j);
	}
}

class Child extends Parent {
	Child(int i, int j) {
		super(i, j);
		this.j = 15;
	}
}

public class InheritanceExample {

	public static void main(String[] args) {

		Child c = new Child(5, 10);
		c.printIJ();

		Parent p = new Child(5, 10);
		c.printIJ();

	}

}

Here printIJ() is an instance method of class Parent. It is inherited and become a part of Child now. So we can now invole it using a Child object as well.

 

Important points

  1. Inherited fields can be accessed just like other normal fields (even using "this" keyword).

  2. Java specification says that "A subclass does not inherit the private members of its parent class.". This means that subclass cannot  access private member (using "this" keyword) from a subclass like other members.

  3. When you create an object, it will call its super constructor and the super class object is created with all fields including private; however, only inherited fields can be accessed, from child. We can still access the private variables of the parent class using an accessible parent method like a setter or getter, but not through the "this" keyword.

  4. Java supports single-parent, multiple-children inheritance and multilevel inheritence (Grandparent-> Parent -> Child) for classes and interfces.

  5. Java supports multiple inheritance (multiple parents, single child) only through interfaces. This is done to avoid some confusions and errors such as diamond problem of inheritance. 

Comments

"Could you please invite me for the next live doubts clearing session so that I need to understand inheritance better"

Was it useful?

the above simple example program for inheritence makes easier to understand, :)

Was it useful?

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)