搜索
首页Java调用父类和子类重载方法的 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中文网其他相关文章!

声明
本文转载于:stackoverflow。如有侵权,请联系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.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中