首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多态性方法在java中的匹配

多态性方法在java中的匹配
EN

Stack Overflow用户
提问于 2021-11-23 10:29:44
回答 1查看 93关注 0票数 0

我很困惑Java多态性是如何工作的。在下面的例子中,showText有三种多态性方法,这些方法分别命名为method-1method-2method-3。守则如下:

代码语言:javascript
复制
public class PolymorphismTest {
    public static void main(String[] args) {
        showText("def");
    }

    // method-1
    private static void showText(Object abc) {
        print("1.....");
        showText(abc, "abc");
    }

    // method-2
    private static void showText(Object abc, String item) {
        // print(abc.getClass().getName());
        print("2.....");
        String text;
        if (abc == null) {
            text = null;
        } else {
            text = abc.toString();
        }
        showText(text, item);
    }

    // method-3
    private static void showText(String abc, String item) {
        print("3.....");
    }

    private static void print(String text) {
        System.out.print(text);
    }
}

方法-1有一个参数,Object

  • method-2类型有两个参数,参数类型为ObjectString

  • method-3有两个参数,与method-2值相同,而第一个参数类型是String

main()使用String类型的参数调用method-1,在method-1的主体中它调用另一个方法,其中一个方法匹配,method-2method-3

我在java 8中测试它,输出是

代码语言:javascript
复制
1.....2.....3.....
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 10:43:18

重载是在编译时决定的,因此当第一个方法获得abc参数时,它会将其视为Object (而不是String),并调用具有适当签名的method-2

您可能会感到困惑,因为这与适用于类实例(对象)方法的动态链接机制不同,并且基于调用所针对的实例的实际类(例如, in abc.toString())在运行时解析方法toString()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70079236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档