0

My Question :
Suppose

IA--->>>An Interface
             void func();
A---->>>Abstract Class implementing IA
              void func(){}
B---->>Class extending A
           void func(){}
C---->>Class extending B
           void func{}

Now what i am doing .... i made an Object of C class.....

C c = new C();
IA ia = c;

now if i want to call ....

ia.func();

which function will be called......

i want to call func() of B class ......
whether i have to typecast the interface for that....any other solution....or it is some what wrong implementation....Solutions are welcome....

Edited by Reverend Jim: Fixed formatting

3
Contributors
6
Replies
7
Views
8 Years
Discussion Span
Last Post by JamesCherrill
0

Maybe I don't understand your hierarchy, but I believe you can also use super.methodName() to call the superclass's method instead of the class's method.

0

Maybe I don't understand your hierarchy, but I believe you can also use super.methodName() to call the superclass's method instead of the class's method.

But what if all the functions of all classes having same name have different implementation....

0

I answered your actual question earlier, but on further thought I'm puzzled as to why you would want to do that.
If C is a kind of B that needs different implementations of various methods, why create a C then decide to use the "wrong" methods for it? At first sight this looks like a design error, but maybe you have a good reason?

0

I answered your actual question earlier, but on further thought I'm puzzled as to why you would want to do that.
If C is a kind of B that needs different implementations of various methods, why create a C then decide to use the "wrong" methods for it? At first sight this looks like a design error, but maybe you have a good reason?

I am not allowed to change or add any function in any class rather you can create new class or extend it with any class.......I create that C class......Till B class it was earlier design...also requirement is not to change the name of functions....So this is the only way for me......
for now in this rather than casting i got a new idea....
in C---->func()
if(conditionApplied)
doMineWork
else
super.func();


So now existing app will be work and mine too :).....

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.