Es scheint einen Ententest zu geben. Nach Angaben von Wikipedia "If it walks like a duck and quacks like a duck, it must be a duck" "Wenn es wie eine Ente geht und wie eine Ente klingt, muss es eine Ente sein." Es scheint die Idee zu sein. Das Tippen von Enten kam von hier.
Das Tippen von Enten sieht zum Beispiel in Ruby so aus.
sampleRuby.rb
#Prüfung
def test(foo)
puts foo.sound
end
#Ente bellt
class Duck
def sound
'quack'
end
end
#Miau einer Katze
class Cat
def sound
'myaa'
end
end
#Lauf
test(Duck.new)
test(Cat.new)
Die Ausgabe ist
python
#Ausgabeergebnis
quack
myaa
Kurz gesagt, es scheint, dass Sie Methoden mit demselben Namen in verschiedenen Klassen verwenden und zwischen denselben Operationen für verschiedene Objekte wechseln können.
Angenommen, ein junger Mensch und ein Erwachsener erben eine menschliche Klasse und beurteilen sie in der Fahrzeugklasse, um festzustellen, ob sie als Fahrer qualifiziert sind. Was ist zum Beispiel mit dem folgenden Beispielcode? Python.
samplePython.py
#
#Menschliche Klasse
# 2020.07.24 ProOJI
#
class Person(object):
"""Altersmethode"""
def __init__(self, age=1):
self.age = age
"""Fahrerqualifizierungsmethode"""
def drive(self):
if self.age >= 18:
print('You can drive!')
print("Because You're {} years old.".format(self.age))
else:
raise Exception('Sorry...you cannot drive.')
#Jugendklasse
class Young(Person):
def __init__(self, age=12):
if age < 18:
super().__init__(age)
else:
raise ValueError
#Erwachsenenklasse
class Adult(Person):
def __init__(self, age=18):
if age >= 18:
super().__init__(age)
else:
raise ValueError
#
#Autoklasse
#Beurteilung der Fahrerqualifikation
class Car(object):
def __init__(self, model=None):
self.model = model
def ride(self, person):
person.drive()
#Jugend_Instanzgenerierung (13 Jahre alt)
young = Young(13)
#aufgewachsen_Instanzgenerierung (46 Jahre alt)
adult = Adult(46)
python
#Wagen_Instanzgenerierung_1
car = Car()
#Beurteilung von Jugendlichen im Alter von 13 Jahren
car.ride(young)
#Ausgabeergebnis
# Exception: Sorry...you cannot drive.
python
#Wagen_Instanzgenerierung_2
car = Car()
#Beurteilung von Jugendlichen 46 Jahre alt
car.ride(adult)
#Ausgabeergebnis
# You can drive!
# Because You're 46 years old.
Es gibt ein Konzept des Polymorphismus in der Programmierung, und auf Japanisch heißt es Polymorphismus und Diversität. Dies ist eines der objektorientierten Konzepte. Sie können Methoden mit demselben Namen verwenden, auch wenn die Klassen unterschiedlichen Typs sind, und Sie können zwischen denselben Operationen für verschiedene Objekte wechseln. Es stellt sich heraus, dass ein solcher Code als Ententypisierung bezeichnet wird.