首页 >Java >调用父类和子类重载方法的 Java 最佳实践

调用父类和子类重载方法的 Java 最佳实践

王林
王林转载
2024-02-09 11:30:09597浏览

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

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除