» Главная
eXcode.ru » Статьи » Ruby
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 20





Продажа компьютеров

Продажа компьютеров и оргтехники. Телефоны служб и администрации.

comp66.ru




Наследование в Ruby




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

Мы можем отразить эту концепцию в Ruby:



ruby> class Mammal

| def breathe

| print "inhale and exhale\n"

| end

| end

nil

ruby> class Cat<Mammal

| def speak

| print "Meow\n"

| end

| end

nil

Хотя мы явно не определили, как именно Cat должен дышать (breathe), каждый кот наследует поведение класса Mammal, поскольку Cat был определен как подкласс Mammal. (В ОО терминологии меньший класс является подклассом а больший (более общий) класс является суперклассом.) Следовательно, с точки зрения программиста, кошки (cats) бесплатно получают возможность дышать (breathe); после добавления метода speak method, наши кошки могут и дышать (breathe) и говорить (speak).



ruby> tama = Cat.new

#<Cat:0xbd80e8>

ruby> tama.breathe

inhale and exhale

nil

ruby> tama.speak

Meow

nil

Бывают ситуации, когда некоторые свойства суперкласса не должны наследоваться определенным подклассом. Хотя обычно птицы знают как летать, пингвины являются нелетающим подклассом птиц.



ruby> class Bird

| def preen

| print "I am cleaning my feathers."

| end

| def fly

| print "I am flying."

| end

| end

nil

ruby> class Penguin<Bird

| def fly

| fail "Sorry. I′d rather swim."

| end

| end

nil

Вместо того, чтобы полностью определять все свойства каждого новото класса, мы можем просто добавить или переопределить их в соответствии с различиями между подклассом и суперклассом. Это использование наследования иногда называют differential programming. Это одно из преимуществ объектно-ориентированного программирования.

Источник: www.opennet.ru
К началу статьи





Добавил: MadvEXДата публикации: 2007-10-09 08:44:52
Рейтинг статьи:3.00 [Голосов 10]Кол-во просмотров: 3822

Комментарии читателей

Всего комментариев: 0
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Что для вас важнее в ПО
Его размер
7% (9)
Его цена
7% (8)
Его простота и доступность
17% (20)
Его функциональность
64% (77)
Наличие дополнительных фич
0% (0)
Наличие русского языка
5% (6)
Графицеский интерфейс
1% (1)
Изготовитель
0% (0)

Проголосовало: 121
Вопрос:
- Помогите найти "дрoва" на крышку от батареек у радиомыши.
Рейтинг: 5.5/10 (4)
Посмотреть все анекдоты

 
eXcode.ru » Статьи » Ruby