Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Private, Protected, Public in Ruby. What about interfaces and abstract classes in Ruby?

There's no requirement for you to use the words "public", "private" and "protected" in Ruby - methods within classes that you write default to being public anyway. But you may wish to protect certain of your methods from being called directly by the users of your classes.

So - what protection do they give?

If you give a private command, then it means that the following method(s) up to the next protected or public command are only callable without an explicit object reference.. So this means that you must be within the class when you call them, and furthermore you must call them on the current object. adding self. in front of a call wouldn't change the meaning, but it would lead to NoMethodError exception.

If you give a protected command, then it means that the following method(s) up to the next private or public command are only accessible when called from within methods in the current class, or from methods within classes which are derived (extended) from that class.

Example - see [here] from last week's Ruby course.

As well as the use of "private" (especially) being rather different in Ruby to other languages, you'll note that Ruby has no concept of an abstract class - it doesn't need one, though there are some online examples if you want to write a class that forces actions on anyone extending it.

You'll also note that Ruby does not offer multiple inheritance, nor interfaces. But it does offer mixins which allow you to pull in additional common code into multiple classes in addition to inheritance. See [here] for an article on that topic, and examples.
(written 2012-06-23, updated 2012-06-30)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R116 - Ruby - Security Issues.
  [945] Code quality counts - (2006-11-26)
  [2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)

R108 - Ruby - More Classes and Objects
  [184] MTBF of coffee machines - (2005-01-20)
  [656] Think about your design even if you don't use full UML - (2006-03-24)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1587] Some Ruby programming examples from our course - (2008-03-21)
  [2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
  [2601] Ruby - is_a? v instance_of? - what is the difference? - (2010-01-27)
  [2603] Ruby objects - a primer - (2010-01-29)
  [2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
  [2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
  [2623] Object Oriented Ruby - new examples - (2010-02-03)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
  [2980] Ruby - examples of regular expressions, inheritance and polymorphism - (2010-10-02)
  [3142] Private and Public - and things between - (2011-01-22)
  [3154] Changing a class later on - Ruby - (2011-02-02)
  [3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
  [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
  [3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
  [3782] Standard methods available on all objects in Ruby - (2012-06-23)
  [4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
  [4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
  [4550] Build up classes into applications sharing data types in Ruby - (2015-10-23)
  [4551] Testing your new class - first steps with cucumber - (2015-10-23)


Back to
Ruby of Rails - cleanly displaying model data in the view
Previous and next
or
Horse's mouth home
Forward to
Standard methods available on all objects in Ruby
Some other Articles
Programming languages - what are the differences between them?
Steam train calls at Melksham - Pictures
Load path, load and require in Ruby, and a change from 1.8 to 1.9
Private, Protected, Public in Ruby. What about interfaces and abstract classes in Ruby?
Ruby of Rails - cleanly displaying model data in the view
Adding validation to form entries and sticky fields - Ruby on Rails
Providing a form to allow the user to add data to the model - Ruby on Rails
Multiple views in a single appication - sharing common parts of the template - Ruby on Rails
Some traps it's so easy to fall into in designing your web site
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2021: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/3781_Pri ... Ruby-.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb