Win a copy of Learn Spring Security (video course) this week in the Spring forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Threads: question from jchq

 
madhu v pe
Ranch Hand
Posts: 100
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

the answer is
3) Compile time error: class Runt is an abstract class. It can't be instantiated.

my doubt is why Runt is abstrct class?

Thanks
 
Leandro Melo
Ranch Hand
Posts: 401
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi.

Because if a class implements interface Runnable it must override the abstract method run().
[ May 15, 2007: Message edited by: Leandro Melo ]
 
madhu v pe
Ranch Hand
Posts: 100
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Melo,
Thanks for your reply.
so, if any class implementing an interface and not providing functionality of the methods will be considered as abstract class.
am I right?

Thanks
 
Meena R. Krishnan
Ranch Hand
Posts: 178
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

if any class implementing an interface and not providing functionality of the methods will be considered as abstract class.


Instead, look at it this way,
Only an abstract class can skip the implementation of the Interface's methods that it is extending.

In the sample, the compilation error you will get is
"The type Runt must implement the inherited abstract method Runnable.run()"


Either the given answer options are insufficient or the answer C) needs to be reworded.
 
madhu v pe
Ranch Hand
Posts: 100
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks krishnan, for posting another way of understanding the answer.

we will leave the options given in the question, lets concentrate on the appropriate answer.

Originally posted by M Krishnan:

In the sample, the compilation error you will get is
"The type Runt must implement the inherited abstract method Runnable.run()"


when I compile it says - "Runt is not abstract and does not override abstract method run() in java.lang.Runnable"

as you mentioned above there is no question of inheritance right?
If I misunderstood or still need to go depth of your answer pls clarify me.

Thanks
[ May 17, 2007: Message edited by: madhu v pe ]
 
Anupam Sinha
Ranch Hand
Posts: 1090
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It's not that if a class implements an interface and does not provide it's method/s implementation you can get away with the class if you do not instatiate the class. For exaple if you remove these line

You still would not be able to compile the code because you need to either mark the class as explicitly abstract or provide an implementation for the interface method/s.

A class would not automatically become abstract if you do not provide the implementation for the interface method/s. Hence I would say all possible answers are infact wrong.
[ May 17, 2007: Message edited by: Anupam Sinha ]
 
madhu v pe
Ranch Hand
Posts: 100
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes Anupam,

you are right. probably answer 3 is also not exactly correct with the wording. what me and krishnan agreed before.
the correct reason will be
1.since Runt is implementing Runnable it should provide the implementation of its methods which is run()
2 otherwise Runt should be declared as abstract.

Am I right?

Thanks
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic