• 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

Object Oriented Enunciate (low coupling)

 
Ranch Hand
Posts: 48
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
"The reference variable is declared for an interface type, not a class. The interface provides a small number of methods."

I don't understand what this means ...

could you represent it in code, please ?

thanks in advance
 
author & internet detective
Posts: 41860
908
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Juan,
Consider "Comparable comp = new Date();"

The Comparable interface has less methods than the Date class. Defining comp as a Comparable rather than a Date narrows down the number of methods available which clarifies the code. This helps decrease the coupling because unnecessary dependencies aren't floating around.
 
Juan Manuel Alberto de los Santos
Ranch Hand
Posts: 48
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Comparable comp = new Date();

why do you want to do that ?
what does it make ?

Comparable comp;

is the same thing
 
Ranch Hand
Posts: 66
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
So in effect, what you end up with is a Date object where only the methods defined by the Comparable interface are accessible?
 
Jeanne Boyarsky
author & internet detective
Posts: 41860
908
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Juan Manuel Alberto de los Santos:
Comparable comp;

is the same thing


Yes. Except that it doesn't create an object. I was trying to illustrate both parts of the declaration.

Originally posted by Mark Williams:
So in effect, what you end up with is a Date object where only the methods defined by the Comparable interface are accessible?


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

excuse my ignorance here, but I am slightly confused. In relation to the above code:



I was of the opinion, that the JVM during late binding, looks for how the object was created, not the reference, so should not the methods of the Date class, be the available methods, as despite being a Comparable reference type, the object comp was created as a Date. Thus should it not have the methods of the Date class?

To re-iterate Mark's question:

So in effect, what you end up with is a Date object where only the methods defined by the Comparable interface are accessible



I believe it to be that, you end up with a Date type which "IS A" Comparable, of type Date and therefore the methods are of Date class (which by inheritance also include Comparable methods.

Of course, I'm not an expert, but this is my understanding.
 
Marshal
Posts: 79177
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
If you want to use that object as a Date you would have to cast it.
And we all know how hazardous class-casting is.

Declaring it as Comparable means that only the methods in the Comparable type are accessible.
 
Stephen Davies
Ranch Hand
Posts: 352
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Campbell, although I believe its a bit dificult for us newcomers to get our heads round. I supose its polymorphism in practice. :roll:
 
Campbell Ritchie
Marshal
Posts: 79177
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Practice is the word; lots of practice is required, and then you will get used to it.

And remember only non-private instance methods can be overridden, so only non-private instance methods can exhibit polymorphism
 
You may have just won ten million dollars! Or, maybe a tiny ad.
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic