子类型多态性组件

时间:2016-10-05 16:24:54

标签: java polymorphism

我刚刚开始使用java。只是为了确保我能够正确解释并理解术语。看起来子类型多态性将由两个组件组成,即多态对象和多态方法。

我的问题 所以Animal a = new Dog();“a”是多态对象和方法覆盖多态方法吗?

1 个答案:

答案 0 :(得分:2)

多态性是编程语言的一个特性,它允许例程使用不同类型的变量。如果某些代码可以同时使用某些不同类型,则它们是多态的。 越多态的代码就越好

有两种类型的多态性 - 通用 ad hoc

  1. 在通用多态性下,一种类型可能使用无限其他类型(例如。toString()方法适用于任何引用类型);
  2. 根据ad hoc多态性,预先知道它使用的类型数量(例如f(int)可以与intbyteshort一起使用char 的)。
  3. 有三种类型的 ad hoc 多态性:

    1. 扩展原始转化次数例如,接受double的方法也可以接受任何7种原语);
    2. 运算符重载(在Java中,用户没有运算符重载,在其他语言中,例如+符号可能会重载); < / LI>
    3. 重载是一项功能,如果类的参数列表不同,则允许类具有多个具有相同名称的方法。
    4. 有两种通用多态类型 - 参数多态和子类型多态:

      1. 参数多态(又名泛型)是一个类型不确定的类(TE字符,可以替换为任何类型)
      2. 子类型多态性 - 是因为继承(当我们从某些类继承时,在方法签名中可以编写超类并放在那里任何子类)。如果没有虚拟方法,则此子类型机制不起作用。
      3. 所有静态方法都是非虚拟,所有非静态方法都是虚拟

        虚方法 - 是一个类的方法,可以在子类中重写,方法调用的具体方法实现将在 runtime 中定义。然后,开发人员无需知道使用虚方法处理对象的确切类型:足以知道该对象是类的类或子类的实例,其中声明了此方法。

        虚方法是多态实现的重要方式。它们允许创建通用代码,它可以应用于基类以及任何子类的对象。同时,基类定义了与对象协调的方式,它的任何后代都可以通过这种方式具体实现。

        使用继承也可以达到多态性,因为如果我们有父类和子类,并且我们有父类的代码,那么我们也可以将它与子类一起使用(例如接受{{的方法1}}可以接受任何其他类型)。

        可以使用虚函数操作的对象称为多态对象

        方法覆盖不被视为多态。签名多态方法是一种可以使用各种呼叫签名和返回类型进行操作的方法。

        这是多态性的一个很好的例子:

        java.lang.Object

        在您的示例中,Animal a = new Dog(); 是类型为a的{​​{1}}类型的引用。

        编译器右侧部分的基础上检查表达式的左侧部分 JVM的工作