Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这些是多态性的例子吗?_Java_Oop_Polymorphism - Fatal编程技术网

Java 这些是多态性的例子吗?

Java 这些是多态性的例子吗?,java,oop,polymorphism,Java,Oop,Polymorphism,在浏览了一些关于多态性的问题之后,似乎多态性是Java中的一个普遍概念,它允许一个对象的行为就像它是另一个类的实例一样;因此,代码更独立于具体类。考虑到这一点,以下main()多态性的方法用法中的两个方法调用是否正确 abstract class A { void f() { System.out.println("A.f()"); } abstract void g(); } class B extends A { void g() { System.out.println("B

在浏览了一些关于多态性的问题之后,似乎多态性是Java中的一个普遍概念,它允许一个对象的行为就像它是另一个类的实例一样;因此,代码更独立于具体类。考虑到这一点,以下
main()
多态性的方法用法中的两个方法调用是否正确

abstract class A
{
  void f() { System.out.println("A.f()"); }
  abstract void g();
}

class B extends A
{
  void g() { System.out.println("B.g()"); }
}

public class Test
{
  public static void main(String[] args)
  {
    A a = new B();
    a.f();        // Is this an example of Polymorphism?
    a.g();        // ...
  }
}
输出为:

A.f();  
B.g();

两者都是多态性的例子。
B
的行为类似于
A
。(我之前错过了
抽象void g()
声明。或者您是在我们回答时添加的??)


然而,在这种情况下,“an
A
”有点像橡皮。由于
A
抽象的
,因此不能有一个对象是
A
,而不是某个其他类的实例。

多态性–意味着给定类型的单个变量能够用于引用 并自动调用特定于变量引用的对象类型的方法。在一个 简而言之,多态性是一种自下而上的方法调用多态性的好处是很容易添加新的 不中断调用代码的派生对象类(如所示示例代码中的GetToArea() 下面)使用多态类或接口的。当您向对象发送消息时,即使您 不知道它是什么特定类型,正确的事情发生了,这就是所谓的多态性。所使用的过程 实现多态性的面向对象编程语言称为动态绑定

多态性似乎是Java中的一个普遍概念


多态性继承封装是面向对象语言(不仅仅是Java)的三大支柱

只有
a.g()
是多态性。由于您有一个类型为
a
的引用,但它在object
B
中调用了方法,因此我宁愿说它们应该作为同一类的实例。派生成员应遵守javadoc中记录的总合同

我建议您阅读wiki文章,并了解动态绑定的概念


简言之:具体调用的方法取决于被引用对象的运行时类型而不是,取决于引用变量的类型。

不,我没有编辑我的问题。顺便说一句,你如何看待Ean下面的答案?我不同意:-)。在这两种情况下,您都在对B实例调用方法,就好像它是a实例一样。这是两种情况下的多态性。