L'éditeur PHP Zimo vous apporte les meilleures pratiques en matière de programmation Java : appeler des méthodes surchargées de classe parent et de sous-classe. En Java, l'héritage est un concept important de programmation orientée objet qui permet aux sous-classes d'hériter des propriétés et des méthodes des classes parentes. La surcharge de méthodes se produit lorsque la classe parent et la sous-classe définissent des méthodes portant le même nom. Dans ce cas, nous devons faire attention à la manière d'appeler correctement les méthodes surchargées de la classe parent et de la sous-classe pour garantir l'exactitude et la maintenabilité du programme. Cet article vous donnera une introduction détaillée aux meilleures pratiques pour appeler des méthodes surchargées de classes et sous-classes parentes afin de vous aider à vous familiariser avec la programmation Java.
Quelle est la meilleure façon d'appeler une méthode surchargée à la fois par les classes parent et enfant ? Par exemple. Disons que j'ai un cours parent et enfant
private class parent{ public parent() { } } private class child extends parent{ string name; public child(string name) { this.name = name; } }
Je veux créer une méthode qui surcharge les deux
private void methodcall(parent parent){ system.out.println("parent class"); } private void methodcall(child child){ system.out.println(child.name); }
J'ai créé une méthode pour créer un parent ou un enfant et appeler la méthode methodcall
private void callMethod(String name){ Parent parent; if(name != null) { parent = new Child(name); } else { parent = new Parent(); } methodCall(parent); }
Cela semble toujours appeler la méthode parent, comment puis-je appeler la méthode enfant sans convertir explicitement l'objet en enfant ?
À mon avis, vous devriez le remplacer en super classe parent
中创建一个名为 methodcall() 的方法,并分别在 child
comme ceci :
protected void methodcall(){ system.out.println("parent class"); }
en classe child
@override protected void methodcall(){ system.out.println(this.name); }
Alors tu appelles comme çamethodcall
private void callmethod(string name){ parent parent; if(name != null) { parent = new child(name); } else { parent = new parent(); } parent.methodcall(); }
est déterminée par son nom et sa liste de paramètres. Cela signifie que methodcall(parent)
和 methodcall(client)
est différent.
Ce que vous voulez, ce n'est pas surcharger, mais submerger. Vous savez ce que je veux dire lorsque vous ajoutez l'annotation @override
à une méthode dans @override
添加到 child
dans votre code - le compilateur se plaindra...
Si vous laissez la définition de la classe inchangée, vous devez effectuer un cast vers child
才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall()
是非静态的(或者您有让 callmethod()
作为 child
afin d'appeler la méthode correspondante - bien que cela ne fonctionne pas du tout car methodcall()
n'est pas statique (ou vous devez laisser callmethod()
en tant que membre de
Ou vous changez votre code comme ceci :
class parent { public parent() {} public <t extends parent> void methodcall( final t arg ) { out.println( getclass().getname() ); } } class child extends parent { string name; public child( string name ) { this.name = name; } @override public <t extends parent> void methodcall( final t arg ) { out.println( name ); } }
Utilisez-le comme ceci :
public static void callMethod( final String name ) { Parent parent; if( name != null ) { parent = new Child( name ); } else { parent = new Parent(); } parent.methodCall(parent); }
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!