Skip to main content

Inheritance in Java

Inheritance in Java

Inheritance in java is a mechanism in which one object acquires all the properties and behaviors of parent object.
It is 'is-a' relationship between a superclass and its subclasses. This means that an object of a subclass can be used wherever an object of the superclass can be used. 
Class Inheritance in java mechanism is used to build new classes from existing classes.
When a Class extends another class it inherits all non-private members including fields and methods
The main purpose is to promote the reuse of code.
 The inheritance relationship is transitive: class A extends class B which extends class C. So class A will inherit class C also.

Since constructors and initializer blocks are not members of a class, they are not inherited by a subclass.

The java.lang.Object is top of any Class inheritance hierarchy.

 Types of Inheritance in java:
  1. Single Inheritance  : When a class inherit just one top class example : class A extends class B
  2. Multilevel Inheritance: When a class inherit class which also extend another class.
  3. Heirarchical Inheritance : When multiple classes inherit from one class.
Note: Multiple inheritance is not supported in java  as it could lead to ambiguity as presented in diamond problem . Another issue illustrated below :

Consider a scenario where A, B and C are three classes. The C class inherits A and B classes. If A and B classes have same method and you call it from child class object, there will be ambiguity to call method of A or B class.

* The  difference with inherited static (class) methods and inherited non-static (instance) methods is that when you write a new static method with the same signature, the old static method is just hidden, not overridden
* If super class method does not declare an Exception then subclass overridden method can not declare checked exception. So you can only use Unchecked exception.
Other option is to allow Super class to declare ParentException and then child overridden methods can declare any exceptions which are child of ParentException
* Checked exception thrown by subclass should be same or subclass of checked exception thrown by parent class.
* Unchecked exception could be different in subclass
* Interfaces extended by subclass should be compatible with interfaces of superclass

this and super keywords:

The two keywords, this and super to help you explicitly name the field or method that you want. Using this and super you can decide whether to call a method or field present in the same class or to call from the immediate superclass.
'this' keyword is used as a reference to the current object which is an instance of the current class.
The keyword 'super' also references the current object, but as an instance of the current class’s super class.

Comments

Popular posts from this blog

OBJECT class in Java

OBJECT class in Java : Object is at the top of class hierarchy in java. Every class in the Java system is a descendent (direct or indirect) of the Object class. The Object class defines the basic state and behavior that all objects must have, such as the ability to compare oneself to another object, to convert to a string, to wait on a condition variable, to notify other objects that a condition variable has changed, and to return the object's class. Mainly below methods are provided by Object class : public String toString() returns the string representation of this object. protected Object clone() throws CloneNotSupportedException creates and returns the exact copy (clone) of this object. public boolean equals(Object obj) compares the given object to this object. public int hashCode() returns the hashcode number for this object. public final Class getClass() returns the Class class object of this object. The Class class can further be used to get the metadata of ...

Java Priority Queue sort using lambda expression

Priority Queue :     In Java  Priority Queue  is a  queue  which keeps its elements sorted as per their natural order( example in ascending orders for Integer, alphabetical a-z for alphabets) or using a custom Comparator at the time of creation you can custom sort it. It has most method  similar to a queue  add, clear, poll, peek As priority queue have to compare elements to keep in order so elements must be comparable otherwise, it will throw ClassCastException .  As null can not be compared so you are not allowed to insert null too A program to sort priority queue using Lambda function in Java           c lass   PriorityQueueLambdaJava { public List<Integer> KFrequent( int [] nums, int k) { Map<Integer, Integer> map = new HashMap<>(); for ( int j: nums) { map .put(j, map .getOrDefault(j, 0 ) + 1 ); } PriorityQueue<Map.Entry<Integ...

Important Keywords: Static, Continue,Break:

Important Keywords: Static, Continue,Break:  Static: The static keyword in java is used for memory management mainly.  The static keyword members belongs to the class rather than instance of the class. Following members can be declared as static: variable (also known as class variable) method (also known as class method) block nested class  static variables : We can use static keyword with a class level variable. A static variable is a class variable and doesn’t belong to Object/instance of the class. Since static variables are shared across all the instances of Object, they are not thread safe . Usually static variables are used with final keyword for common resources or constants that can be used by all the objects. If the static variable is not private, we can access it as: ClassName.variableName //static variable example private static int a ge; public static String name; static methods: A static method belongs t...