Delegation is an alternative to inheritance.
Delegation denotes that you include an instance of any class as an instance variable, and forward messages to the instance.
It is safer than inheritance because it ceases you to think about forwarded message , because the instance is of a known class, rather than a new class, and because it doesn’t force you to accept all the methods of the super class: you can provide only the methods that really make sense.
On the other hand, it makes you write more code, and it is harder to re-use (because it is not a subclass).
Remote method invocation is called RMI.
One can work with remote object using RMI.
It gives a impression that you are working with a object that resides within your own JVM though it is somewhere.
The protocol used by RMI is RMI-IIOP
Define a Collection API.
The set of classes and interfaces supporting the operation on collections of objects is the Collection API.
Than the vectors, arrays, and hashtables if effectively replaces,these classes and interfaces are more flexible, more powerful, and more regular
class examples: HashSet, TreeMap, ArrayList, LinkedList,HashMap and TreeMap.
interface examples: Set,List ,Collection and Map.
How many forms of Polymorphism are there?
polymorphism exists in three different forms in Java:
- Method overloading
- Method overriding through inheritance
- Method overriding through the Java interface
Define the wrapper classes in Java and name a few.
Wrapper class is wraps around the primitive data type. List of the primitive types and the corresponding wrapper classes:
Differentiate between JDK ,JRE & JVM
JDK stands for Java Development Kit. It is the most widely used Java Software Development Kit.
JRE stands for Java Runtime Environment. It is an implementation of the Java Virtual Machine which executes Java programs
JVM stands for Java Virtual Machine. It is an interpreter.
In one of our old JAVA projects we had an inheritance depth of five. Believe us we never liked that code. It’s bad to have a huge inheritance depth. A maintainable inheritance depth should be maximum 5. Anything above that is horrible. There is no limit as such specified anywhere that there is some limit on the inheritance sub classing but depending on environments you will get stack over flow error.
- a) In overloading, there is a relationship between methods available in the same class whereas in overriding, there is relationship between a superclass method and subclass method. b) Overloading does not block inheritance from the superclass whereas overriding blocks inheritance from the superclass. c) In overloading, separate methods share the same name whereas in overriding, subclass method replaces the superclass. d) Overloading must have different method signatures whereas overriding must have same signature.
Encapsulation is the mechanism that binds together code and data it manipulates and keeps both safe from outside interference and misuse. Inheritance is the process by which one object acquires the properties of another object. Polymorphism is the feature that allows one interface to be used for general class actions.
Inheritance is the process of inheriting all the features from a class. The advantages of inheritance are reusability of code and accessibility of variables and methods of the super class by subclasses.
There are six interfaces and come under two different inheritance group one which comes under the collection interface root and the other in the map interface root.
It’s the base of all collection classes. It provides a unified way to manipulate collection objects. Collection has group of object called as elements. These elements can be accessed and manipulated using Iterator. List
In List interface the elements are arranged sequentially. Elements can be inserted in to any location and you can also insert duplicate elements. In order to access the elements you need to use the “ListIterator”. Using “ListIterator” you can move back and forth which makes it unique as compared to other iterators.
It represents a collection but no duplicates are allowed in this case.
It extends the Set interface and sorts the set in ascending order.
Map stores association between keys and value pairs. So given a key you can easily find the value. One thing important to note is they do not implement iterable interface. But yes you can obtain a collection view of the map which allows you loop using for loop.
It extends Map so that the keys are maintained in ascending order.
The JDK 1.02 event model uses an event inheritance or bubbling approach. In this model, components are required to handle their own events. If they do not handle a particular event, the event is inherited by (or bubbled up to) the component’s container. The container then either handles the event or it is bubbled up to its container and so on, until the highest-level container has been tried.
In the event-delegation model, specific objects are designated as event handlers for GUI components. These objects implement event-listener interfaces. The event-delegation model is more efficient than the event-inheritance model because it eliminates the processing required to support the bubbling of unhandled events
?– An event is an event object that describes a state of change in a source. In other words, event occurs when an action is generated, like pressing button, clicking mouse, selecting a list, etc. There are two types of models for handling events and they are: a) event-inheritance model and b) event-delegation model
Inheritance is implemented by using “EXTEND” keyword.
Polymorphism is the capability of an action or method to do different things based on the object that it is acting upon.
There are two types of polymorphism:-
- Method Polymorphism through overloading.
- Object polymorphism by inheritance / interfaces.
The event-delegation model has two advantages over the event-inheritance model. They are: a)It enables event handling by objects other than the ones that generate the events. This allows a clean separation between a component’s design and its use. b)It performs much better in applications where many events are generated. This performance improvement is due to the fact that the event-delegation model does not have to be repeatedly process unhandled events as is the case of the event-inheritance.
The Runnable interface is preferred, as it does not require your object to inherit a thread because when you need multiple inheritance, only interfaces can help you. In the above example we had to extend the Base class so implementing Runnable interface is an obvious choice.
Also note how the threads are started in each of the different cases as shown inthe code sample. In an OO approach you should only extend a class when you want to make it different from it’s superclass, and change it’s behavior.
By implementing a Runnable interface instead of extending the Thread class, you are telling to the user that the class Counter is an object of type Base and will run as a thread.
A Java thread could be implemented by using Runnable interface or by extending the Thread class. The Runnable is more advantageous, when you are going for multiple inheritance.
We need run() & start() method both because JVM needs to create a separate thread which can not be differentiated from a normal method call. So this job is done by start method native implementation which has to be explicitly called. Another advantage of having these two methods is we can have any object run as a thread if it implements Runnable interface. This is to avoid Java’s multiple inheritance problems which will make it difficult to inherit another class with Thread.