Какая разница между private и protected?

Private делает возможным вызывать метод только как функцию, то есть единственный допустимый объект-получатель сообщения - это self. Private метод можно вызывать только из класса, где он определен, либо из классов-наследников.

  class Test
    def func
      return 99
    end
    def test(other)
      p func
      p other.func
    end
  end
  t1 = Test.new
  t2 = Test.new

  t1.test(t2)   #=> 99
  99

  # Now make 'func' private

  class Test
    private :func
  end

  t1.test(t2)   #=> 99

  -:7:in `test': private method `func' called for #<Test:0x401b49dc> (NameError)
          from -:22

Методы protected также могут вызываться из своего класса и классов-наследников, но их можно вызывать и как функции, и как методы с объектами-получателями сообщения. Например, следующий код:

  def <=>(other)
    age <=> other.age
  end

скомпилируется, если age - protected, но не private. Эти свойства позволяют контролировать доступ к внутренностям класса.

Обсуждение

Срочно продаю квартиру бизнес уровня недорого

Продаю 4-х комнатную квартиру свободной планировки в доме бизнес класса по адресу ул. Б.Набережная д.9 в пяти минутах от м.Тушинская,
жил.пл. 157 кв.м, имеется 3 сан. узла, большая кухня не менее 15 м. Квартира расположена на первом этаже 22-ух этажного дома, 1-ый этаж находится на уровне 3-го этажа, дом стоит на охраняемой территории с подземной парковкой. Имеется парковка
на одно машино место. Цена 18600000 руб. без учета машино места. Продаю срочно без накруток и посредников! специально для ruby.inuse.ru тел: (962) 368-37-17 - Ольга