目录
问题内容
解决方法
首页 Java 调用父类和子类重载方法的 Java 最佳实践

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

Feb 09, 2024 am 11:30 AM

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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)