Ruby/Class/Protected

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск

A method marked protected can be used only by instances of the class where it was defined, or by derived classes.

class Animal
  def initialize(color)
    @color = color
  end
  protected
  def get_color
    return @color
  end
end
class Dog < Animal
  def initialize(color)
    @animal = Animal.new(color)
  end
  def get_info
    return @animal.get_color
  end
end
dog = Dog.new("brown")
puts "The new animal is " + dog.get_info
animal2 = Animal.new("red")
puts "The new animal is " + animal2.get_color



protected that makes a method private, but within the scope of a class rather than within a single object.

# you can call a protected method from the scope of the methods of any object 
# that"s a member of the same class:
class Person
  def initialize(age)
    @age = age
  end
  def age
    @age
  end
  def age_difference_with(other_person)
    (self.age - other_person.age).abs
  end
  protected :age
end
fred = Person.new(34)
chris = Person.new(25)
puts chris.age_difference_with(fred)
puts chris.age