• 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

Enthuware. Why can't a default method in an interface be final?

 
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:
One of the questions in an Enthuware mock exam used this piece of information: "interface methods can never be declared final."

But I was trying to understand - why can't a default interface method be marked final?
After all, it has a body and perhaps the designer of the interface doesn't want it to be redefined.

 
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
Interesting question.  I suppose they could change the rules to allow this, if they wanted to.  My guess is that they never saw a particular use case for it.  If someone does want to do this, they can also just make an abstract class instead, with a mix of concrete and abstract methods.  I'm guessing they wanted to keep the rules for interfaces a little cleaner.
 
Anil Philip
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:

Mike Simmons wrote:Interesting question.  I suppose they could change the rules to allow this, if they wanted to.  My guess is that they never saw a particular use case for it.  If someone does want to do this, they can also just make an abstract class instead, with a mix of concrete and abstract methods.  I'm guessing they wanted to keep the rules for interfaces a little cleaner.


thank you - I thought you would say - "go read the JLS".
 
Saloon Keeper
Posts: 15621
366
  • Number of slices to send:
    Optional 'thank-you' note:
I think the reason is that it would prevent you from solving the issue where you inherit a default method with the same name from two different interfaces.
 
Anil Philip
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote:I think the reason is that it would prevent you from solving the issue where you inherit a default method with the same name from two different interfaces.


I agree!
 
Mike Simmons
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
Good point.  Though if the methods have incompatible return types but the same name, there's no way to fix that.  But making sure you could resolve the problem for compatible return types at least, that makes sense.

As I recall... my impression, at least... was that interfaces were intentionally kept simpler and more flexible than abstract classes, with the idea that you would never put an implementation in an interface, but that sort of thing would always go into a class, whether concrete or abstract.  There were always some loopholes in that idea, but they added much larger loopholes when they started allowing static, default, and private methods in interfaces.  But even then, they never violated the idea that a new implementation of an interface could provide a new implementation of each method.  That was the whole idea, originally at least.  And it seems that they're still clinging to it...
 
Mike Simmons
Master Rancher
Posts: 4913
74
  • Number of slices to send:
    Optional 'thank-you' note:
Also, I forgot...

Anil, go read the JLS!
 
Marshal
Posts: 28262
95
  • Number of slices to send:
    Optional 'thank-you' note:

Mike Simmons wrote:Anil, go read the JLS!


I haven't read the JLS much, but from what I've seen it really doesn't go into explaining why the rules are the way they are. For example there's a rule which says that the numeric literal 2147483648 can only appear in a context where it's preceded by the unary - operator. Now if you understand how 32 bits are used to contain signed integer numbers you can see why that is. But if you don't, then it's a mystery. It's as if they use "Never explain, never apologize" as a working principle.
 
Enthuware Software Support
Posts: 4831
52
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
While a class implementing an interface may have to redefine a default method if it inherits the same from two interfaces, there is no such issue with a static method. But even a static method can't be marked final in an interface! One can only guess why.

 
Anil Philip
Ranch Foreman
Posts: 626
3
  • Number of slices to send:
    Optional 'thank-you' note:

Mike Simmons wrote:Also, I forgot...

Anil, go read the JLS!



I don't intend to because I believe it is for Java language specialists, University researchers, geeks and those who write Java language tools.
I only want to complete this certification. For myself, Java is like a pet pig that grew wings gradually especially after version 5 and has now flown away, out of reach.
If everything was "read the JLS", we wouldn't need textbooks nor any Java books.
I do understand there are corner cases not covered in some books - like the one in my other thread.
 
Stephan van Hulst
Saloon Keeper
Posts: 15621
366
  • Number of slices to send:
    Optional 'thank-you' note:

Paul Anilprem wrote:But even a static method can't be marked final in an interface! One can only guess why.


What would it even mean for a static interface method to be final? Static interface methods aren't inherited in the first place.
 
Marshal
Posts: 79422
377
  • Number of slices to send:
    Optional 'thank-you' note:

Anil Philip wrote:. . . I don't intend to . . . .

What a shortsighted approach to it
 
Paul Anilprem
Enthuware Software Support
Posts: 4831
52
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote:

Paul Anilprem wrote:But even a static method can't be marked final in an interface! One can only guess why.


What would it even mean for a static interface method to be final? Static interface methods aren't inherited in the first place.



It would mean the same that it does for a class. That it can't be hidden!
 
Stephan van Hulst
Saloon Keeper
Posts: 15621
366
  • Number of slices to send:
    Optional 'thank-you' note:
But static interface methods can't be hidden at all anyway. The final modifier would not serve any additional purpose, and therefore the choice was made to disallow it.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |