• 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
  • Tim Cooke
  • paul wheaton
  • Jeanne Boyarsky
  • Ron McLeod
Sheriffs:
  • Paul Clapham
  • Liutauras Vilda
  • Devaka Cooray
Saloon Keepers:
  • Tim Holloway
  • Roland Mueller
Bartenders:

Calling a Overriding method in a abstract class

 
Ranch Hand
Posts: 231
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi all,
I have basic question which confused me. I am pasting the code below



Here the doit() method is overridden by class B. Now how do I access the doit() method of class A, from class B.

Thanks in Advance,

Regards,
Sivaraman.L
 
Sivaraman Lakshmanan
Ranch Hand
Posts: 231
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi All,
In the previous post the class B code is wrong so I am posting it again.



Regards,
Sivaraman.L
 
Ranch Hand
Posts: 1780
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It's unclear what you intend this to mean: "Now how do I access the doit() method of class A, from class B."

1. Are you trying to invoke A's implementation of doit as a subroutine from within one of B's methods, say its version of doit? Use super:


2. Or are you confused why the following give the same results?

In both cases, B's implementation of doit is invoked because the object being passed the message "doit" is an instance of B (because you wrote new B() twice).
 
Ranch Hand
Posts: 1252
Spring Java Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Actually What happen every time when you write such a code
e.g.

It will search automatically in Base Class first and if there present then execute that method otherwise it checks the method declaration in Derived Class. This is the way of Execution. So this is a known behaviour of JAVA. SO don't be surpriced too much.
.

Hope You will be understand this.

 
Ranch Hand
Posts: 1296
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

It will search automatically in Base Class first and if there present then execute that method otherwise it checks the method declaration in Derived Class...



Thats actually the opposite of what will happen.
 
Sivaraman Lakshmanan
Ranch Hand
Posts: 231
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi all,
Thanks for your replies. I want to call the A's doit() implementation from class B but not from any method in B, but from the B's main method.
something like...



Regards,
Sivaraman.L
 
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You can do it as follows:



OR

 
Ranch Hand
Posts: 3061
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Ajay A Patil:
You can do it as follows:



OR



This will not produce the results requested. Both examples will still call B's doit() method. In fact, I do not think there is any way to call A's doit() method from main unless you have an instance of A. An instance of B will always invoke B's doit() method, even if you have a reference to an A pointing to it.

Layne
 
Ranch Hand
Posts: 328
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Yoy are right Layne,
You can call A's doit() either as a super.doit() in a method or with instance of A but in this case as A is abstract 2nd option is gone.

Shrinivas
 
Happily living in the valley of the dried frogs with a few tiny ads.
We need your help - Coderanch server fundraiser
https://coderanch.com/wiki/782867/Coderanch-server-fundraiser
reply
    Bookmark Topic Watch Topic
  • New Topic