调用父类和子类重载方法的 Java 最佳实践
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无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)
