Polymorphism
How do you restrict a member of a class from inheriting to its sub classes?
By declaring that member as a private. Because, private members are not inherited to sub classes.
Can a class extends more than one class in Java?
No, a class can only extend just one more class in Java. By default, every class extends the java.lang.Object class in Java. That's why Object class considered super class of all classes.
Can we override a non-static method as static in Java?
No, it's not possible to define a non-static method of same name as a static method in the parent class, its compile time error in Java.
Can you overload or override main method in Java?
Since main() is a static method in Java, it follows rules associated with static method, which means you can overload main method but you cannot override it. By the way, even if you overload a main method, JVM will always call the standard public static void main(String args[]) method to start your program. If you want to call your overloaded method you need to do it explicitly in your code.
What is super keyword In Java?
The super keyword in java is a reference variable that is used to refer to immediate parent class object. Whenever you create the instance of subclass, an instance of the parent class is created implicitly i.e. referred by super reference variable. Super keyword has three purposes ● super is used to refer to immediate parent class instance variable. ● super() is used to invoke immediate parent class constructor. ● super is used to invoke immediate parent class method.
Can We Overload A Static Method In Java?
Yes, you can overload a static method in Java. Overloading has nothing to do with runtime but the signature of each method must be different. In Java, to change the method signature, you must change either number of arguments, type of arguments or order of arguments.
What is Polymorphism?
• Polymorphism is a very important concept in OOP because; o it enables to change the behavior of the applications in the run time based on the object on which the invocation happens. By Polymorphism; one object can have different forms • Two types → Compile Time which is Static and Run Time Polymorphism which is related with child and parent class. • Polymorphism is implemented using the concept of Method overloading and method overriding. This can only happen when the classes are under the parent and child relationship using inheritance.
What is Inheritance in Java?
Inheritance is an Object oriented feature which allows a class to inherit behavior and data from other class. For example, a class Car can extend basic feature of Vehicle class by using Inheritance. One of the most intuitive examples of Inheritance in the real world is Father-Son relationship, where Son inherit Father's property. ● Inheritance means one object gets all the properties and behaviors of parent object. ● Inheritance is a compile-time mechanism. ● A super-class can have any number of subclasses. But a subclass can have only one superclass. ● The extends keyword indicates that you are making a new class that derives from an existing class. ● The superclass and subclass have "is-a" relationship between them.
Difference between Polymorphism and Inheritance?
Inheritance is used to define the relationship between two classes. It is similar to Father-Son relationship like in the real world. In Java, we have Parent class (also known as super class) and child class (also known as subclass). Similar to the real-world, Child inherits Parents qualities. ● A child class can reuse all the codes written in Parent class and only write code for behavior which is different than the Parent. ● Inheritance is actually meant for code reuse. On the other hand, Polymorphism is the ability of objects to behave in multiple forms. ● It is classified as overloading and overriding. By the way, they are actually related to each other, because Inheritance makes Polymorphism possible. It is not possible to write polymorphic code without any relationship between two classes. ● Dynamic Polymorphism → Overriding ● Static Polymorphism → Overloading
Can we change argument list of overridden method?
No, you cannot change the argument list of overridden method in Java. An overriding method must have same signature as original method. If we change the list of arguments it's called overloading.
Can we override constructor in Java?
No, you cannot override constructor in Java because they are not inherited. Remember, we are talking about overriding here not overloading, you can overload construct but you cannot override them. Overriding always happens at child class and since constructor are not inherited and their name is always the same as the class name its not possible to override them in Java.
Can we override final method in Java?
No, you cannot override final method in Java. Trying to override final method in subclass will result in compile time error. Actually making a method final is signal to all developer that this method is not for inheritance and it should be used in its present form. You generally make a method final due to security reasons.
What is method hiding in Java?
Since the static method cannot be overridden in Java, but if you declare the same static method in subclass then that would hide the method from the superclass. It means, if you call that method from subclass then the one in the subclass will be invoked but if you call the same method from superclass then the one in superclass will be invoked. This is known as method hiding in Java.
What are the rules of method overriding in Java?
Some rules of method overriding are following: Overriding method cannot throw higher exception than overridden one, but that's only true for checked exception. Overriding method cannot restrict access of overridden method e.g. if original method is public then overriding method must be public. But it can expand access e.g. if original method is protected than overriding method can be protected or public.
In Java, is Constructor overriding possible?
This is the most popular Java Inheritance Interview Questions asked in an interview. In Java, Constructor overriding is not possible as the constructors are not inherited as overriding is always happens on child class or subclass but constructor name is same as a class name so constructor overriding is not possible but constructor overloading is possible.
Can we have two methods in a class with the same name?
We can define two methods in a class with the same name but with different number/type of parameters. Which method is to get invoked will depend upon the parameters passed. This concept is called Overloading In Java.
Can we pass an object of a subclass to a method expecting an object of the super class?
Yes, you can pass that because subclass and superclass are related to each other by Inheritance which provides IS-A property. I mean Banana is a Fruit so you can pass banana if somebody expect fruit.
Can you override a private or static method in Java?
You cannot override a private or static method in Java. If you create a similar method with the same return type and same method arguments in child class then it will hide the superclass method; this is known as method hiding. Similarly, you cannot override a private method in subclass because it's not accessible there. What you can do is create another private method with the same name in the child class. Let's take a look at the example below to understand it better.
Difference between method Overloading and method Overriding?
• First and most important difference between overloading and overriding is that, in case of overloading , method name must be the same, but the parameters must be different; o in case of overriding , method name and parameters must be the same • Second major difference between method overloading and overriding is that; o We can overload method in the same class but method overriding occurs in two classes that have inheritance relationship. • We cannot override static, final and private method in Java, but we can overload static, final and private method in Java. • In method overloading , return type can be same or different. In method overriding , return type must be the same type. • In method overloading access modifier of that method does not play any role, but in overriding, access modifier of child method should be same or larger than parent version of that method. For Example: If parent method is public, child method can only be public, cannot be protected, default or private.
What is the difference of final vs finalize vs finally ?
• final → is a keyword and used to apply restrictions on class, method and variable. ● final Class CAN'T be Inherited ● final Method CAN'T be Overridden ● final Variable value CAN'T be changed. It is constant. • finally → is a block and used to place important code, it will be executed whether exception handled or not • finalize() → is a method and used to perform clean-up processing before Object is Garbage collected.