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 中重写它,如下所示:
立即学习“Java免费学习笔记(深入)”;
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 添加到 child 中的方法时,您明白我的意思 - 编译器会抱怨...
如果您保留类的定义不变,则必须转换为 child 才能调用相应的方法 - 尽管这根本不起作用,因为 methodcall() 是非静态的(或者您有让 callmethod() 作为 child 的成员。
或者你像这样改变你的代码:
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中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号