Код IT
← Каталог

Учебные примеры ООП — Наследование

Родитель Animal и дочерние Cat и Dog с общим eat() и своим speak().

smalltalk smalltalkencyclopediaoop-practice4 embed URL статья в энциклопедии
Smalltalk main.st
"=== animal-inheritance.st — Pharo Playground ==="
Object subclass: #Animal
    instanceVariableNames: 'name'
    classVariableNames: ''
    package: 'OOPPractice' !

Animal class >> newName: aName [
    ^ self basicNew name: aName; yourself
]

Animal >> name: aString [ name := aString ]

Animal >> eat [
    Transcript show: name, ' ест'; cr
]

Object subclass: #Cat
    instanceVariableNames: ''
    classVariableNames: ''
    package: 'OOPPractice' !

Cat >> speak [
    Transcript show: 'Мяу!'; cr
]

Object subclass: #Dog
    instanceVariableNames: ''
    classVariableNames: ''
    package: 'OOPPractice' !

Dog >> speak [
    Transcript show: 'Гав!'; cr
]

"--- Demo ---"
| cat dog |
cat := Cat newName: 'Мурка'.
dog := Dog newName: 'Шарик'.
cat eat.
cat speak.
dog eat.
dog speak.
"=== animal-inheritance.st — Pharo Playground ==="
Object subclass: #Animal
    instanceVariableNames: 'name'
    classVariableNames: ''
    package: 'OOPPractice' !

Animal class >> newName: aName [
    ^ self basicNew name: aName; yourself
]

Animal >> name: aString [ name := aString ]

Animal >> eat [
    Transcript show: name, ' ест'; cr
]

Object subclass: #Cat
    instanceVariableNames: ''
    classVariableNames: ''
    package: 'OOPPractice' !

Cat >> speak [
    Transcript show: 'Мяу!'; cr
]

Object subclass: #Dog
    instanceVariableNames: ''
    classVariableNames: ''
    package: 'OOPPractice' !

Dog >> speak [
    Transcript show: 'Гав!'; cr
]

"--- Demo ---"
| cat dog |
cat := Cat newName: 'Мурка'.
dog := Dog newName: 'Шарик'.
cat eat.
cat speak.
dog eat.
dog speak.