Forums Register Login

Accessor Methods

+Pie Number of slices to send: Send
What are "accessor methods"?

Accessor methods (also called getters/setters) are methods which encapsulate the access to fields of an object.









Why don't I just access the fields directly?

There are several reasons why this would probably be a not-so-good idea:


  • An object should have full control over its data. With direct field access, it doesn't know when a value gets changed and can't react accordingly. You might later want to cache some data, lazily initialize it, calculate it on the fly instead of putting it into a field, notify someone of a change or a myriad of other things. Without accessor methods, you don't have a place to put that behaviour.


  • (Some languages make it possible to switch from direct access to access through methods without the clients even noticing. Java doesn't, so it's often quite costly to do that switch later.)


  • Fields aren't polymorphic. If you later want to make use of polymorphic behaviour - for example getting a value from a different source in a subclass, or applying the DecoratorPattern - you can't do so with direct field access.



  • As someone else might expand on, good ObjectOriented design and experienced ObjectOriented developers suggest that developing message- and behavior-based systems is a good thing.


  • So, should I have AccessorMethods for all my fields?


  • Uh, no. Sometimes you don't need 'em (see Wiki:YouAintGonnaNeedIt) and sometimes it isn't appropriate to allow outsiders access to your state (see above).


  • What about field access in the class itself? In Subclasses?

    Related threads:


  • https://coderanch.com/t/98276/patterns/Getter-Setter-Methods
  • https://coderanch.com/t/98435/patterns/getters-setters-evil


  • Other resources:


  • Wiki:AccessorsAreEvil
  • http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html?

  • I can't beleive you just said that. Now I need to calm down with this tiny ad:
    a bit of art, as a gift, that will fit in a stocking
    https://gardener-gift.com


    You can read but need at least 5 cow(s) to post
    This thread has been viewed 1187 times.
    Similar Threads
    Basic Concept - Clarification
    OO Design FAQ
    empty Constructor vs nonEmpty
    About Getters & Setters
    Field Access VS getter/setter-Access
    More...

    All times above are in ranch (not your local) time.
    The current ranch time is
    Mar 28, 2024 17:17:03.