• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

difference bet. interfaces and abstrct classes

 
Ranch Hand
Posts: 18944
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hai friends,
i am not able to get a clear idea about the difference bet. interfaces and abstract classes.using both we can achieve vitual polymorphism in java.see in c++,we are achieving it using abstract methods/classes. code reusablity can also be achieved using both interfaces as well as abstract classes. so my question is that why java uses two terms abstract as well as interfaces while the intention can be achieved using onething itself.
please speak in terms of oops rather than getting into the language.
thank you
with regards
balraj
 
Ranch Hand
Posts: 193
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
This answer is maybe a bit too simple, however, abstract classes can contain some implementation, interfaces cannot.
Interfaces can be described as abstract classes where all methods are abstract and all variables are final.
 
Bartender
Posts: 612
7
Mac OS X Python
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
balraj,
in purely oop terms, (java) abstract is way to define a method interface to a class without defining the method (ie virtual
method in c++), interface (java) is a way to define: both
a set of methods that must be defined and to allow for multiple inheiritance. - difficult to discuss in pure oop terms, since
multiple inheiritance is not a pure oop term.
steve
 
Anonymous
Ranch Hand
Posts: 18944
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
dear Brown and steve,
thank you for your replies. you have come nearer to my question to some extent.
what i have understood from both of you is that
{
abstract classes - partial implementation
interfaces - No implementation at all
using interfaces we achieve multiple inheritance
}
in both the classes (interface or abstract class), we can not create instances at all. so we are not at all going to use those partial implementation at all.ie no method calls of those partial implementation.
coming to multiple inheritance, sometimes the final derived class may have two or more copies of the same signature from its parent classes. i have enclosed the example coding.
interface A
{
int add(int a,int b);
}
interface B extends A
{
int subtract(int a,int b);
}
interface C extends A
{
int multiply(int a,int b);
}
class D implements B,C
{
public int add(int a,int b) { return a+b;}
public int subtract(int a,int b) {return a-b;}
public int multiply(int a,int b) {return a*b;}
}
class Try1
{
public static void main(String args[])
{
D d=new D();
System.out.println(d.add(3,4));
System.out.println(d.subtract(4,5));
System.out.println(d.multiply(6,7));
}
}
so in class D, which copy of add() method we are implementing either from B or C, we don't know.
it is avoided in c++, defining the class as virtual at the time of deriving.
it is avoided in java using interfaces without the programmer's knowledge.
so my final word is that
{
1.parial implementation or no implementation is not at all a matter.
2.multiple inheritance can be achieved by both if sun java developers has already thoght of it. so we can not accept that interfaces in java are only for multiple inheritance.
}
so my question is that
1. has java unnecessarily used two terms which confuses programmers.
2.assuming sun java developers are much more intelligent people than us, what is the exact intension behind in it?
expecting your replies
with regards
balraj
 
Graeme Brown
Ranch Hand
Posts: 193
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Balraj
I can't give you a definitive answer to your two questions, but your code illustrates quite well how interfaces get round multiple inheritance.
Remember that Java doesn't actually allow multiple inheritance as such, since neither A,B, or C can be instantiated it does it matter from which definition add() is used. Class D is still going to have to provide the one and only implementation of add().
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic