[edit] Protected access
class Font
def initialize(size)
@size = size
end
protected
def showsize
return @size
end
end
class ChangeSize < Font
def initialize(size)
@font = Font.new(size)
end
def shownewsize
return @font.showsize
end
end
Watch what happens when you try to access a protected method from outside the class:
[edit] How to override Ruby restriction levels
Of course, you can bypass restriction levels by redefining the method in a related class. If you're familiar with how CSS definition rules work for example, you will easily understand how to apply in Ruby too.
Basically, the last definition of a method is taken into consideration, so if you're defined a class as protected in the main class but then as private in a derived class, the method will be treated as private.
The same principle applies for other redefined characteristics inside a method.
[edit] Ruby Class Methods
Let's say you're in a hurry and just want to get your work done and seeing results. You're not particularly interested in saving the data your program is supposed to work on, so you pick a shortcut: class methods.
Class methods have the advantage that they can be used without defining any objects first. The disadvantage is that you cannot store the data the class is supposed to manipulate because there are no objects to store it in.
Let's take this sample:
You're trying to teach your kid how to do multiplications. Here's a simple class method to do it.
class Multiply
def Multiply.mul(first, second)
return first * second
end
end
puts Multiply.mul
So you can only use class methods to compute something.
|