php小编子墨为你带来Java编程中的最佳实践——调用父类和子类重载方法。在Java中,继承是一种重要的面向对象编程概念,它允许子类继承父类的属性和方法。当父类和子类都定义了同名的方法时,就产生了方法重载。在这种情况下,我们需要注意如何正确地调用父类和子类的重载方法,以确保程序的正确性和可维护性。本文将为你详细介绍调用父类和子类重载方法的最佳实践,帮助你在Java编程中更加得心应手。
问题内容
调用父类和子类都重载的方法的最佳方法是什么 例如。说我有一个家长和孩子班级
private class parent{ public parent() { } } private class child extends parent{ string name; public child(string name) { this.name = name; } }
我想创建一个对两者都重载的方法
private void methodcall(parent parent){ system.out.println("parent class"); } private void methodcall(child child){ system.out.println(child.name); }
我创建了一个方法来创建父级或子级并调用 methodcall 方法
private void callMethod(String name){ Parent parent; if(name != null) { parent = new Child(name); } else { parent = new Parent(); } methodCall(parent); }
这似乎总是调用 parent 方法,如何在不显式地将对象强制转换为子对象的情况下调用子方法?
解决方法
在我看来,您应该在超类 parent
中创建一个名为 methodcall() 的方法,并分别在 child
中重写它,如下所示:
protected void methodcall(){ system.out.println("parent class"); }
在 child
类中
@override protected void methodcall(){ system.out.println(this.name); }
然后你这样调用methodcall
private void callmethod(string name){ parent parent; if(name != null) { parent = new child(name); } else { parent = new parent(); } parent.methodcall(); }
方法的签名由名称和参数列表确定。这意味着 methodcall(parent)
和 methodcall(client)
是不同的。
你想要的不是超载,而是压倒性的。当您在代码中将注释 @override
添加到 @override
添加到 child
中的方法时,您明白我的意思 - 编译器会抱怨...
如果您保留类的定义不变,则必须转换为 child
才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall()
是非静态的(或者您有让 callmethod()
作为 child
才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall()
是非静态的(或者您有让 callmethod()
作为
或者你像这样改变你的代码:
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 ); } }像这样使用它:🎜
public static void callMethod( final String name ) { Parent parent; if( name != null ) { parent = new Child( name ); } else { parent = new Parent(); } parent.methodCall(parent); }
以上是调用父类和子类重载方法的 Java 最佳实践的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
视觉化网页开发工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中