Je regardais une vidéo Google Tech Talks , et ils ont fréquemment appelé polymorphisme.
Ce qui est le polymorphisme, qu’est-ce pour et comment s’en sert-on ?
Je regardais une vidéo Google Tech Talks , et ils ont fréquemment appelé polymorphisme.
Ce qui est le polymorphisme, qu’est-ce pour et comment s’en sert-on ?
Si vous pensez à la racine grecque du terme, il devrait devenir évident.
Donc, le polymorphisme est la capacité (en programmation) afin de présenter la même interface pour les différents sous-jacentes des formes (types de données).
Par exemple, les entiers et les flottants sont implicitement polymorphes, puisque vous pouvez ajouter, soustraire, multiplier et ainsi de suite, indépendamment du fait que les types sont différents. Ils sont rarement considérées comme des objets dans l'habitude terme.
Mais, de la même manière, une classe comme BigDecimal
ou Rational
ou Imaginary
peut également fournir ces opérations, même si elles opèrent sur différents types de données.
L'exemple classique est l' Shape
de la classe et toutes les classes peuvent hériter d'elle (le carré, le cercle, le dodécaèdre, polygone irrégulier, splat et ainsi de suite).
Avec le polymorphisme, chacune de ces classes seront différents de données sous-jacente. D'un point de forme a besoin que de deux coordonnées (en supposant que c'est dans un espace à deux dimensions, bien sûr). Un cercle a besoin d'un centre et un rayon. Un carré ou un rectangle a besoin de deux coordonnées en haut à gauche et en bas à droite (et éventuellement) d'une rotation. Un polygone irrégulier a besoin d'une série de lignes.
Et, en faisant de la classe responsable de son code et ses données, vous pouvez obtenir le polymorphisme. Dans cet exemple, chaque classe a sa propre Draw()
de la fonction et le code client pourrait tout simplement faire:
shape.Draw()
pour obtenir le comportement correct pour n'importe quelle forme.
Ceci est en contraste à l'ancienne façon de faire les choses dans lequel le code a été séparé de données, et vous auriez eu des fonctions telles que drawSquare()
et drawCircle()
.
L'orientation de l'objet, le polymorphisme et l'héritage sont tous des concepts étroitement liés, et ils sont indispensables à connaître. Il y a eu beaucoup de "balles d'argent" au cours de ma longue carrière, qui est fondamentalement juste fait long feu, mais le paradigme OO s'est avéré être une bonne. Apprendre, de comprendre, de l'aimer - vous serez heureux vous avez fait :-)
(a) au départ, j'avais écrit que comme une plaisanterie, mais il s'est avéré être correct et, par conséquent, pas drôle. Le momomer styrène arrive à être fabriqué à partir de carbone et d'hydrogène, C
, et le polystyrène est fabriqué à partir de groupes de de la, 8
.
Le polymorphisme est quand vous pouvez traiter un objet comme une version générique de quelque chose, mais lorsque vous y accédez, le code détermine le type exact qu'il est et appelle le code associé.
Voici un exemple en C#. La création de quatre classes à l'intérieur d'une application de console:
public abstract class Vehicle
{
public abstract int Wheels;
}
public class Bicycle : Vehicle
{
public override int Wheels()
{
return 2;
}
}
public class Car : Vehicle
{
public override int Wheels()
{
return 4;
}
}
public class Truck : Vehicle
{
public override int Wheels()
{
return 18;
}
}
Maintenant, créez le suivant dans le main() du module pour l'application de la console:
public void Main()
{
System.Collections.Generic.List<Vehicle> vehicles = new System.Collections.Generic.List<Vehicle>();
vehicles.Add(new Bicycle());
vehicles.Add(new Car());
vehicles.Add(new Truck());
foreach (Vehicle v in vehicles)
{
Console.WriteLine(string.Format("A {0} has {1} wheels.", v.GetType().Name, v.Wheels));
}
}
Dans cet exemple, nous créons une liste de la classe de base du Véhicule, qui ne sait pas sur combien de roues de chacune de ses sous-classes, mais ne sais que chaque sous-classe est responsable de connaître le nombre de roues.
Nous avons ensuite ajouter un Vélo, Camion et Voiture à la liste.
Ensuite, nous pouvons en boucle sur chaque Véhicule dans la liste, et de les traiter tous de manière identique, cependant, lorsque nous voulons accéder aux Véhicules à Roues, le Véhicule délégués de classe de l'exécution du code pour la sous-classe.
Ce code est dit polymorphe, le code qui est exécuté est determioned par la sous-classe référencé au moment de l'exécution.
J'espère que cela vous aide.
Le polymorphisme est un long mot pour un concept très simple.
Polymorphisme décrit un modèle en programmation orientée objet dans les classes qui ont des fonctionnalités différentes, tout en partageant une interface commune.
La beauté de polymorphisme est que le code de travail avec les différentes classes n'a pas besoin de savoir à quelle classe il est l'aide car ils sont tous utilisés de la même manière. Un monde réel analogie pour le polymorphisme est un bouton. Tout le monde sait comment utiliser un bouton: il vous suffit d'appliquer la pression. Ce qu'un bouton "ne", cependant, dépend de ce qu'il est connecté et que le contexte dans lequel il est utilisé - mais le résultat n'affecte pas la façon dont il est utilisé. Si votre patron vous dit d'appuyer sur un bouton, vous avez déjà toutes les informations nécessaires pour effectuer la tâche.
Dans le monde de la programmation, le polymorphisme est utilisé pour rendre les applications plus modulaire et extensible. Au lieu de désordre dans les instructions conditionnelles en décrivant les différents cours d'action, vous créez interchangeables objets que vous sélectionnez en fonction de vos besoins. C'est l'objectif de base du polymorphisme.
Polymorphisme:
C'est le concept de la programmation orientée objet.La capacité des différents objets de répondre, chacun à sa manière, de messages identiques est appelé polymorphisme.
Le polymorphisme des résultats par le fait que chaque classe vit dans son propre espace de noms. Les noms attribués dans une définition de classe n'entrent pas en conflit avec les noms attribués n'importe où à l'extérieur. Cela est vrai à la fois des variables d'instance d'un objet est une structure de données et de méthodes de l'objet:
Tout comme les champs d'une structure C sont, de la protection de l'espace de noms, de sorte sont une instance de l'objet de variables.
Les noms de méthodes sont également protégés. Contrairement aux noms de fonctions en C les noms de méthode ne sont pas des symboles globaux. Le nom d'une méthode dans un la classe ne peut pas en conflit avec les noms de méthode dans d'autres classes; deux très différentes classes peuvent mettre en œuvre des méthodes portant le même nom.
Les noms de méthodes sont une partie de l'interface de l'objet. Lorsqu'un message est envoyé à la demande d'être un objet de faire quelque chose, le message des noms de la méthode de l'objet doit effectuer. Parce que les différents objets peuvent avoir des méthodes avec le même nom, la signification d'un message doit être compris par rapport à l'objet particulier qui reçoit le message. Le même message envoyé à deux objets différents peuvent invoquer deux méthodes distinctes.
Le principal avantage de polymorphisme, c'est qu'il simplifie l'interface de programmation. Il autorise les conventions qui peuvent être réutilisés dans la classe après la classe. Au lieu d'inventer un nouveau nom pour chaque nouvelle fonction, vous pouvez l'ajouter à un programme, les mêmes noms peuvent être réutilisés. L'interface de programmation peut être décrite comme un ensemble abstrait des comportements, tout à fait indépendamment des classes qui les mettent en œuvre.
Exemples:
Exemple 1: Voici un exemple simple écrit en Python 2.x.
class Animal:
def __init__(self, name): # Constructor of the class
self.name = name
def talk(self): # Abstract method, defined by convention only
raise NotImplementedError("Subclass must implement abstract method")
class Cat(Animal):
def talk(self):
return 'Meow!'
class Dog(Animal):
def talk(self):
return 'Woof! Woof!'
animals = [Cat('Missy'),
Dog('Lassie')]
for animal in animals:
print animal.name + ': ' + animal.talk()
Exemple 2: le Polymorphisme est mis en œuvre en Java à l'aide de la méthode de la surcharge et de la méthode primordial concepts.
Permettez-nous de Considérer Voiture exemple pour des discussions sur le polymorphisme. Prendre toutes les marques comme Ford, Honda, Toyota, BMW, Benz, etc., Tout est de type Voiture.
Mais ont chacun leurs propres caractéristiques avancées et des technologies les plus avancées qui sont impliqués dans leur comportement.
Nous allons maintenant créer une base de type de Voiture
Car.java
public class Car {
int price;
String name;
String color;
public void move(){
System.out.println("Basic Car move");
}
}
Laissez-nous mettre en œuvre la Voiture Ford exemple.
Ford s'étend le type de Voiture hériter de tous ses membres(propriétés et méthodes).
Ford.java
public class Ford extends Car{
public void move(){
System.out.println("Moving with V engine");
}
}
Le ci-dessus Ford classe étend la classe de Voiture et met également en œuvre la méthode move (). Même si la méthode move est déjà disponible pour Ford par le biais de l'Héritage, Ford a encore mis en œuvre la méthode dans son propre chemin. Ceci est appelé la redéfinition de méthode.
Honda.java
public class Honda extends Car{
public void move(){
System.out.println("Move with i-VTEC engine");
}
}
Tout comme Ford, Honda étend également le type de Voiture et de mise en œuvre de la méthode move à sa manière.
La redéfinition de méthode est une caractéristique importante pour permettre le Polymorphisme. À l'aide de la redéfinition de Méthode, les Sous-types peuvent changer la façon dont les méthodes de travail qui sont disponibles par le biais de l'héritage.
PolymorphismExample.java
public class PolymorphismExample {
public static void main(String[] args) {
Car car = new Car();
Car f = new Ford();
Car h = new Honda();
car.move();
f.move();
h.move();
}
}
Polymorphisme Exemple De Sortie:
Dans le PolymorphismExample classe principale méthode, j'ai créé trois objets - Voiture, Ford et Honda. Tous les trois objets sont désignés par le type de Voiture.
Veuillez noter ici un point important qu'Un super-type de classe peut se référer à une Sous-classe du type de l'objet, mais le vice-verset n'est pas possible. La raison en est que tous les membres de la super-classe sont disponibles à la sous-classe à l'aide de l'héritage et pendant le temps de compilation, le compilateur essaie d'évaluer si le type de référence que nous utilisons est la méthode qu'il tente d'accéder.
Donc, pour les références de la voiture,f et h de la PolymorphismExample, la méthode move existe de type de la Voiture. Ainsi, le compilateur passe le processus de compilation sans aucun problème.
Mais quand il s'agit pour le moment de l'exécution, l'exécution, la machine virtuelle invoque les méthodes sur les objets qui sont des sous-types. Donc, la méthode move() est invoquée à partir de leurs propres implémentations.
Ainsi, tous les objets sont de type Voiture, mais pendant le temps d'exécution, l'exécution dépend de l'Objet sur lequel l'invocation qui se passe. Cela s'appelle le polymorphisme.
Le polymorphisme est la capacité de traiter une classe de l'objet comme si c'est la classe mère.
Par exemple, supposons qu'il existe une classe appelée Animal, et une classe appelée Chien qui hérite de l'Animal. Le polymorphisme est la capacité de traiter tout objet Chien comme un Animal, un objet de la sorte:
Dog* dog = new Dog;
Animal* animal = dog;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.