为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的动态和静态多态有什么区别?

Java中的动态和静态多态有什么区别?

千万里不及你 2019-08-30 14:08:12
任何人都可以提供一个简单的例子来解释Java中动态和静态多态的区别吗?
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

多态性


1.静态绑定/编译时绑定/早期绑定/方法重载。(在同一类中)


2.动态绑定/运行时绑定/后期绑定/方法覆盖。(在不同的类中)


重载示例:

class Calculation {  

  void sum(int a,int b){System.out.println(a+b);}  

  void sum(int a,int b,int c){System.out.println(a+b+c);}  


  public static void main(String args[]) {  

    Calculation obj=new Calculation();  

    obj.sum(10,10,10);  // 30

    obj.sum(20,20);     //40 

  }  

}  

压倒一切的例子:

class Animal {    

   public void move(){

      System.out.println("Animals can move");

   }

}


class Dog extends Animal {


   public void move() {

      System.out.println("Dogs can walk and run");

   }

}


public class TestDog {


   public static void main(String args[]) {

      Animal a = new Animal(); // Animal reference and object

      Animal b = new Dog(); // Animal reference but Dog object


      a.move();//output: Animals can move


      b.move();//output:Dogs can walk and run

   }

}


查看完整回答
反对 回复 2019-08-30
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

  • 方法重载将是静态多态的一个例子

  • 而重写将是动态多态的一个例子。

    因为,在重载的情况下,编译时编译器知道链接到调用的方法。但是,在运行时确定动态多态性


查看完整回答
反对 回复 2019-08-30
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

动态(运行时)多态性运行时存在的多态性。这里,Java编译器不了解在编译时调用哪个方法。只有JVM决定在运行时调用哪个方法。使用实例方法的方法重载和方法重写是动态多态的示例。

例如,

  • 考虑一个序列化和反序列化不同类型文档的应用程序。

  • 我们可以将'Document'作为基类,并从中派生出不同的文档类型类。例如XMLDocument,WordDocument等。

  • Document类将'Serialize()'和'De-serialize()'方法定义为virtual,每个派生类将根据文档的实际内容以自己的方式实现这些方法。

  • 当需要序列化/反序列化不同类型的文档时,文档对象将由“Document”类引用(或指针)引用,并且在调用“Serialize()”或“De-serialize()”方法时在其上,调用适当版本的虚拟方法。

静态(编译时)多态性是编译时显示的多态性。这里,Java编译器知道调用哪个方法。使用静态方法重载方法和方法重写; 使用私有或最终方法重写的方法是静态多态的示例

例如,

  • 员工对象可能有两个print()方法,一个不带参数,另一个带前缀字符串以及员工数据。

  • 给定这些接口,当在没有任何参数的情况下调用print()方法时,查看函数参数的编译器知道要调用哪个函数,并相应地生成目标代码。

有关详细信息,请阅读“什么是多态”(Google it)。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 1305 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号