【问题标题】:How to make polymorphism in java when using basic types like int?java - 使用int等基本类型时如何在java中进行多态性?
【发布时间】:2015-01-17 14:24:03
【问题描述】:

本人是Java编程新手,如有误用,敬请见谅。 我可以在处理类类型时进行多态性,比如:

    class A{}
    class B{}

    void method(Object obj){
    if (obj instanceof A) {}
    else if (obj instance of B){}
    else {}
}

我可以传递不同的类来调用method()的不同部分,但是在处理像int这样的基本类型时,它不是从Object继承的。

我知道实际上这不是严格的多态性,因为没有覆盖。也许,泛型编程是一个更恰当的名称,但我不知道这是否正确。

【问题讨论】:

  • 多态不是你能做的。它是语言的行为,它允许您将给定的对象视为依赖于上下文的各种对象类型。
  • 你认为哪种方式能更好地表达我的观点?
  • 您可以使用继承 Number 的 Integer 类扩展 Object。但是你的问题到底是什么?
  • 我认为当您使用不同的简单类型调用方法时,您希望您的方法以不同的方式运行。不是吗?看看我下面的答案。
  • @PatrykDobrowolski,我明白了,谢谢你的回答。

标签: java polymorphism


【解决方案1】:

如果您尝试使用基本数据类型执行您所说的(这不是完全多态性),您可以尝试使用整数,而不是整数。 int 是原始数据,按其值存储。 Integer 是一个类,具有类的所有功能(加上自动装箱/拆箱,但不用担心)。

因为 Integer 是一个类,你可以扩展它并使用 instanceof 的东西做你正在谈论的事情。

还有 (Long)s、(Double)s、(Boolean)s 等等

【讨论】:

    【解决方案2】:

    您可以像这样定义几个具有相同名称和不同参数类型的方法:

    void method(int a) {}
    void method(long a) {}
    void method(double a) {}
    

    正如@ByteCommander 所说,它被称为重载 我想这就是你的意思。在这种情况下,当您调用时:

    int a = 1; method(a);
    

    您将执行第一个定义的方法。等等……

    【讨论】:

    • 还有:盒装整数。
    • 这种技术叫做方法重载,不是吗?但是多态的定义是什么呢?
    • 多态=扩展类+方法重载+基类引用指向子类引用;这个公式来自中文java教程。
    • 好!这就是我想要的,我不知道我能不能这样做,因为我曾经认为在一个类中会有名称冲突。
    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 2015-01-20
    • 2019-09-15
    • 1970-01-01
    • 2013-10-11
    • 2021-11-23
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多