C # Osgrais héréditaire et complication différentielle héritée
Overriding
Lorsqu'une méthode se produit dans une instruction de sous-classe, la méthode définie dans la classe de base a le même nom, le même type de retour et la liste des paramètres. La réécriture permet l'implémentation personnalisée de la méthode de la classe de base. Lorsque l'objet sous-classe appelle la méthode de réécriture, le code de la sous-classe couvrira efficacement le comportement de la méthode de classe de base. En revanche,
ombrageLorsqu'une méthode se produit dans une instruction de sous-classe, la méthode de cette méthode a le même nom que la méthode dans la classe de base, mais la signature de la méthode (type de retour ou liste de paramètres) différent. Une nouvelle méthode est cachée dans la sous-classe, qui remplace la méthode par le même nom dans la classe de base. Appelez la méthode cachée sur l'objet de la sous-classe pour effectuer le code dans la sous-classe, cachant efficacement la méthode de base. Considérez l'exemple suivant:
Lorsque vous appelez la méthode sur les objets de classe A et B, la sortie attendue est la suivante:
<code class="language-csharp">class A { public int Foo() { return 5; } public virtual int Bar() { return 5; } } class B : A { public new int Foo() { return 1; } // 隐藏 public override int Bar() { return 1; } // 重写 }</code>
La différence clé est lors de la conversion de l'objet B en un objet:
<code class="language-csharp">A clA = new A(); B clB = new B(); Console.WriteLine(clA.Foo()); // 输出:5 Console.WriteLine(clA.Bar()); // 输出:5 Console.WriteLine(clB.Foo()); // 输出:1 Console.WriteLine(clB.Bar()); // 输出:1 // 将 B 转换为 A Console.WriteLine(((A)clB).Foo()); // 输出:5</code>
Pour les méthodes cachées (FOO), appelez la réalisation de la classe de base.
fournit un mécanisme contrôlé pour modifier la méthode à implémenter, tout en maintenant la structure d'héritage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!