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中文网其他相关文章!