亚型多态性成分

Tic*_*ter 1 java polymorphism

我刚刚开始接触java。只是为了确保我能正确解释这一点并理解术语。看起来子类型多态性将由两个组件组成:多态对象和多态方法。

我的问题 那么Animal a = new Dog();“a”会是多态对象,而重写的方法会是多态方法吗?

Dim*_*San 5

多态性是编程语言的一项功能,允许例程使用不同类型的变量。如果某段代码可以同时使用某些不同的类型,那么它就是多态的。多态代码越多越好

\n\n

多态性有两种类型 -通用多态性临时多态性

\n\n
    \n
  1. 在通用多态性下,一种类型可以使用无数其他类型(例如,toString()方法可以与任何引用类型一起使用);
  2. \n
  3. 在临时多态性下,它所使用的类型数量是预先已知的(例如f(int)可以与int, byte,short和 一起char使用)。
  4. \n
\n\n

临时多态性分为三种类型:

\n\n
    \n
  1. 扩大基元转换例如,接受的方法double也可以接受 7 个基元中的任何一个);
  2. \n
  3. 运算符重载(在Java中没有用户重载的运算符,在其他语言中有,例如+符号可以重载);
  4. \n
  5. 重载是一项功能,允许一个类拥有多个同名的方法(如果它们的参数列表不同)。
  6. \n
\n\n

并且有两种通用多态类型 \xe2\x80\x93 参数多态和子类型多态:

\n\n
    \n
  1. 参数多态性(又名泛型)是一个类型不确定的类(TE可以用任何类型替换的字符)。
  2. \n
  3. 子类型多态性\xe2\x80\x93 是我们由于继承而拥有的(当我们从某个类继承时,在方法签名中可以编写超类并在那里放置任何子类)。如果没有虚方法,这种子类型机制就无法工作
  4. \n
\n\n

所有静态方法都是非虚拟方法,所有非静态方法都是虚拟方法

\n\n

虚拟方法\xe2\x80\x93 是类的方法,可以在子类中重写,方法调用的具体方法实现将在运行时定义定义。然后,开发人员无需知道对象的确切类型即可使用虚拟方法来使用该对象:只要知道该对象是声明此方法的类或类的子类的实例就足够了。

\n\n

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

\n\n

多态性也可以通过使用继承来实现,因为如果我们有父类和子类,并且我们有父类的代码,那么我们也可以将它与子类一起使用(例如accept可以接受任何其他类型的方法java.lang.Object)。

\n\n
\n\n

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

\n\n

并且方法重写不被视为多态性。签名多态方法是一种可以使用多种调用签名和返回类型中的任何一种进行操作的方法。

\n\n

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

\n\n
Animal a = new Dog();\n
Run Code Online (Sandbox Code Playgroud)\n\n

在您的示例中,是type 对象a的引用 type 。AnimalDog

\n\n

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

\n