Thursday, April 18, 2024
HomeJavaDistinction Between Summary Class vs Interface in Java

Distinction Between Summary Class vs Interface in Java


When to make use of interface and summary class is likely one of the hottest object-oriented design questions and is sort of at all times requested in Java, C#, and C++ interviews. On this article, we’ll largely speak within the context of the Java programming language, however it equally applies to different languages as effectively. The query normally begins with a distinction between summary class and interface in Java, which is somewhat straightforward to reply, particularly in case you are accustomed to the syntax of the Java interface and summary class. Issues begin getting tough when the interviewer asks about when to make use of summary class and interface in Java, which is usually primarily based upon a stable understanding of widespread OOPS ideas like Polymorphism, Encapsulation, Abstraction, Inheritance, and Composition


Many programmers fumbles right here, which is pure as a result of most of them have not gone by way of the actual system design course of and haven’t seen the impression of selecting one over one other. 

The repercussion of design choices is greatest identified throughout the upkeep section, the great design permits seamless evolution whereas sustaining a fragile design is a nightmare.

 As I’ve stated beforehand, typically
object-oriented design interview questions additionally helps to know a subject higher, however solely in case you are prepared to do a little analysis and never simply mugging the reply. Questions like when to make use of summary class and interface fall beneath the identical class. 

With a view to greatest perceive this subject, you’ll want to work out some eventualities, examples, and so on. It is best to get this sort of data as a part of your work however even when you do not get there, you’ll be able to complement them by becoming a member of a complete course like these Java design Sample programs and doing a little object-oriented software program design workouts. 


On this article, we’ll be taught the distinction between summary class and interface in Java programming language and primarily based on our understanding of these variations, we’ll attempt to discover out some suggestions and pointers to resolve when it is higher to make use of summary class over the interface or vice-versa.

Distinction between summary class and interface in Java

When to use Abstract Class vs Interface in JavaWhereas deciding when to make use of interface and summary class, it’s necessary to know distinction between summary class and interface in Java. For my part, following two variations between them drives determination about when to make use of summary class or interface in Java.
1) Interface in Java can solely comprises declaration. You can’t declare any concrete strategies inside interface. Alternatively summary class might comprise each summary and concrete strategies, which makes summary class an excellent place to offer frequent or default performance. I counsel studying my publish 10 issues to learn about interface in Java to know extra about interfaces, notably in Java programming language.

2) Java interface can lengthen a number of interface additionally Java class can implement a number of interfaces, Which implies interface can present extra Polymorphism assist than summary class . By extending summary class, a category can solely take part in a single Kind hierarchy however through the use of interface it may be a part of a number of kind hierarchies. E.g. a category may be Runnable and Displayable at identical time. One instance I can bear in mind of that is writing GUI software in J2ME, the place  class extends Canvas and implements CommandListener to offer each graphic and event-handling performance..

3) With a view to implement interface in Java, till your class is summary, you’ll want to present implementation of all strategies, which may be very painful. Alternatively summary class might enable you to on this case by offering default implementation. Due to this cause, I favor to have minimal strategies in interface, ranging from only one, I do not like concept of marker interface, as soon as annotation is launched in Java 5. If you happen to look JDK or any framework like Spring, which I does to know OOPS and design patter higher, you’ll find that almost all of interface comprises just one or two strategies e.g. Runnable, Callable, ActionListener and so on.
I have not included all syntactical distinction between summary class and interface in Java right here, as a result of focus right here to be taught when to make use of summary class and interface and selecting one over different. Nonetheless you’ll be able to see distinction between interface and summary class to discover  all these syntactical variations.

When to make use of interface and summary class in Java

As I stated earlier, it is easy to reply questions like distinction between summary class and interface in Java, however tough to reply follow-ups. Although most of  Java Interview begins with former one, later it goes to see in case you have actually used summary class and interface or not. 

With a view to reply this query, you’ll want to have good understanding of OOPS ideas like Polymorphism, Encapsulation, Abstraction and Inheritance. Additionally familiarity with coupling and cohesion is necessary. You not less than ought to know that effort of designing ought to result in scale back coupling and elevated cohesion, ease of upkeep and so on.

 On this half, we’ll see some eventualities, pointers, guidelines which can assist you to resolve when to make use of summary class and interface in Java.

1) In Java notably, determination between selecting Summary class and interface might affect by the truth that a number of inheritance just isn’t supported in Java. One class can solely lengthen one other class in Java. If you happen to select summary class over interface than you misplaced your likelihood to increase one other class, whereas on the identical time you’ll be able to implement a number of interfaces to indicate that you’ve got a number of functionality. ‘

One of many frequent instance, in favor of interface over summary class is Thread vs Runnable case. If you wish to execute a process and wish run() technique it is higher to implement Runnable interface than extending Thread class.

2) Let’s examine one other case the place an summary class fits higher than interface. Since summary class can embrace concrete strategies, it’s nice for upkeep standpoint, notably when your base class is evolving and hold altering. If you happen to want a performance throughout all of your implementation e.g. a typical technique, than, you’ll want to change each single implementation to incorporate that change if  you have got chosen interface to explain your base class. 

Summary class comes useful on this case as a result of you’ll be able to simply outline new performance in summary tremendous class and each sub class will routinely will get it. Briefly, summary class are nice by way of evolving performance. In case you are utilizing interface, you’ll want to train further care whereas defining contracts as a result of its not straightforward to alter them as soon as printed.

3) Interface in Java is nice for outlining Sorts. Programming for interfaces than implementation can also be one of many helpful Object oriented design precept which suggests good thing about utilizing interface as argument to operate, return kind and so on.

4) Another basic rule of when to make use of summary class and interface is to seek out out whether or not a sure class will type a IS-A hierarchy or CAN-DO-THIS hierarchy. If you already know that you may be creating lessons e.g. Circle, Sq. than it is higher to create an summary class Form which may have space() and perimeter() as summary technique, somewhat than defining Form as interface in Java. Alternatively if you’re going to create lessons which may do thinks like, can fly, you should use interface Flyable as an alternative of summary class.

5) Interface typically outline functionality e.g. Runnable can run(), Callable can name(), Displayable can show(). So if you’ll want to outline functionality, think about using interface. Since a category can have a number of capabilities i.e. a category may be Runnable in addition to Displayable at identical time. As mentioned in first level, Since java doesn’t enable a number of inheritance at class stage, solely method to offer a number of functionality is by way of interfaces.

6) Let’s examine one other instance of the place to make use of Summary class and Interface in Java, which is said to earlier level. Suppose you have got lot of lessons to mannequin that are birds, which may fly, than making a base summary class as Chicken could be acceptable  but when it’s important to mannequin different issues together with Birds, which may fly e.g. Airplanes, Balloons or Kites than it is higher to create interface Flyable to signify flying performance.

 In conclusion, if you’ll want to present a performance which is utilized by identical kind of sophistication than use Summary class and if performance can be utilized by fully unrelated lessons than use interface.

7) One other attention-grabbing use of Summary class and interface is defining contract utilizing interface and offering skeletal utilizing summary class. java.util.Checklist from Java assortment framework is an effective instance of this sample. Checklist is asserted as interface and extends Assortment and Iterable interface and AbstractList is an summary class which implements Checklist. AbstractList supplies skeletal implementation of Checklist interface. 

Advantage of utilizing this strategy is that it reduce the hassle to implement this interface by concrete class e.g. ArrayList or LinkedList. If you do not use skeletal implementation e.g. summary class and as an alternative resolve to implement Checklist interface than not solely you’ll want to implement all Checklist strategies but additionally you could be duplicating frequent code. Summary class on this case scale back effort to implement interface.

8) Interface additionally present extra decoupling than summary class as a result of interface does not comprise any implementation element, whereas summary class might comprise default implementation which can couple them with different class or useful resource.

That is all on When to make use of Summary class and interface in Java. Although dialogue right here is centered round Java however given idea of summary class and interface goes past Java and likewise relevant to different Object oriented language, a few of the suggestions are additionally relevant to different OOPS languages. Key factor to recollect right here is the definition of summary class and interface e.g. in C++ and C# it varies loads like in C++ and Java. 

Single most distinction is a number of inheritance. Now we have additionally mentioned some key variations between summary class and interface in Java, which affect determination of selecting summary class over interface or vice-versa. Last item to recollect is that interface is extraordinarily tough to evolve, so put further care whereas designing interfaces.

PS: Efficient Java, which is likely one of the greatest e-book on Java programming additionally has couple of things on interface and summary class. Joshua Bloch has suggested to favor interface over summary class in some situation, which is price studying.



RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments