Win a copy of Cloud Native PatternsE this week in the Cloud forum
or Natural Language Processing in the AI/ML forum!
  • 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 all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Devaka Cooray
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Paul Clapham
  • Knute Snortum
  • Rob Spoor
Saloon Keepers:
  • Tim Moores
  • Ron McLeod
  • Piet Souris
  • Stephan van Hulst
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Frits Walraven
  • Ganesh Patekar

Abstract method query

 
Ranch Hand
Posts: 46
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can we override an abstract method with default accessibility being declared in a public(abstract) class and in a package different than that of its subclass?

Here's the code

A compile-time error is what I get..
Sub.java:2: Sub is not abstract and does not override abstract method print() in A.Abstract

 
Saloon Keeper
Posts: 10404
223
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
No. The subclass has to be in the same package, or the abstract method has to be declared protected.
 
Rahul Saple
Ranch Hand
Posts: 46
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I thought so too. But then I thought there must be a way out since the compiler doesn't flag such a use. Thanks anyway.
 
Stephan van Hulst
Saloon Keeper
Posts: 10404
223
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What would the compiler flag? It's perfectly valid to declare a package private abstract method in a public abstract class. In this case, implementations are restricted to the package, but the interface that the abstract class defines is still usable outside the package.

[edit]

Oh, I suppose you're referring to the confusing error message the compiler gives you now. Yeah, but it probably would have been marginally useful for the designers to make the compiler print a special error message just for this specific case.
 
Rahul Saple
Ranch Hand
Posts: 46
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Well, I certainly did pounce on the poor compiler to help me out on this one(not the first time). Guess I am the dumb one here.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!