2.What is Abstraction?
3.What is Encapsulation?
4.What is the difference between abstraction and encapsulation?
- Abstraction focuses on the outside view of an object (i.e. the interface) Encapsulation (information hiding) prevents clients from seeing it’s inside view, where the behavior of the abstraction is implemented.
- Abstraction solves the problem in the design side while Encapsulation is the Implementation.
- Encapsulation is the deliverables of Abstraction. Encapsulation barely talks about grouping up your abstraction to suit the developer needs.
5.What is Inheritance?
- Inheritance is the process by which objects of one class acquire the properties of objects of another class.
- A class that is inherited is called a superclass.
- The class that does the inheriting is called a subclass.
- Inheritance is done by using the keyword extends.
- The two most common reasons to use inheritance are:
- To promote code reuse
- To use polymorphism
6.What is Polymorphism?
7.How does Java implement polymorphism?
Polymorphism manifests itself in Java in the form of multiple methods having the same name.
- In some cases, multiple methods have the same name, but different formal argument lists (overloaded methods).
- In other cases, multiple methods have the same name, same return type, and same formal argument list (overridden methods).
8.Explain the different forms of Polymorphism.
Note: From a practical programming viewpoint, polymorphism manifests itself in three distinct forms in Java:
- Method overloading
- Method overriding through inheritance
- Method overriding through the Java interface
9.What is runtime polymorphism or dynamic method dispatch?
10.What is Dynamic Binding?
11.What is method overloading?
- Overloaded methods MUST change the argument list
- Overloaded methods CAN change the return type
- Overloaded methods CAN change the access modifier
- Overloaded methods CAN declare new or broader checked exceptions
- A method can be overloaded in the same class or in a subclass
12.What is method overriding?
- The overriding method cannot have a more restrictive access modifier than the method being overridden (Ex: You can’t override a method marked public and make it protected).
- You cannot override a method marked final
- You cannot override a method marked static
Must not change
Can’t change except for covariant returns
Can reduce or eliminate. Must not throw new or broader checked exceptions
Must not make more restrictive (can be less restrictive)
Reference type determines which overloaded version is selected. Happens at compile time.
Object type determines which method is selected. Happens at runtime.
15.Is it possible to override the main method?
16.How to invoke a superclass version of an Overridden method?
17.What is super?
- You can only go back one level.
- In the constructor, if you use super(), it must be the very first code, and you cannot access any this.xxx variables or methods to compute its parameters.
18.How do you prevent a method from being overridden?
19.What is an Interface?
- You can’t mark an interface as final.
- Interface variables must be static.
- An Interface cannot extend anything but another interfaces.