Java的多态性

时间:2025-10-09 06:43:54 java语言

关于Java的多态性

  多态性有两种:

  1)编译时多态性

  对于多个同名方法,如果在编译时能够确定执行同名方法中的哪一个,则称为编译时多态性.

  2)运行时多态性

  如果在编译时不能确定,只能在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态性.

  方法覆盖表现出两种多态性,当对象获得本类实例时,为编译时多态性,否则为运行时多态性,例如:

  XXXX x1 = new XXXX(参数列表); /pic/p>

  XXX xx1 = new XXX(参数列表);

  x1.toString(); /pic/p>

  xx1.toString(); /pic/p>

  XXXX为XXX的父类.

  由于子类对象既是父类对象,父类对象与子类对象之间具有赋值相容性,父类对象能够被赋值为子类对象.例如,

  XXXX x2 = new XXX(参数列表); /pic/p>

  x2.toString(); /pic/p>

  x2声明为父类对象却获得子类XXX的实例,那么x2.toString()究竟执行父类方法还是执行子类覆盖的方法呢?

  这分为两种情况:

  取决于子类是否覆盖父类方法.如果子类覆盖父类方法,则执行子类方法;

  如果没有覆盖,则执行父类方法.

  在编译时,仅仅依据对象所属的类,系统无法确定到底应该执行那个类的方法,只有运行时才能确定,因此这是运行时多态.

  父类对象并不能执行所有的子类方法,只能执行那些父类中声明子类覆盖的子类方法.

 

【Java的多态性】相关文章:

Java与Java web的区别01-30

浅谈Java语言与Java 技术12-19

Java与Java web有什么不同12-05

java教程之Java编程基础12-06

谈Java语言与Java技术的介绍02-19

Java的类02-22

什么是Java02-15

Java 继承12-20

java讲解01-30