java语言

Java的多态性

时间:2024-10-09 19:56:32 java语言 我要投稿
  • 相关推荐

关于Java的多态性

  多态性有两种:

  1)编译时多态性

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

  2)运行时多态性

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

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

  XXXX x1 = new XXXX(参数列表); //对象获得本类实例,对象与其引用的实例类型一致

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

  x1.toString(); //编译时多态性,执行XXX类的方法.

  xx1.toString(); //编译时多态性,执行XXXX类覆盖的方法.

  XXXX为XXX的父类.

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

  XXXX x2 = new XXX(参数列表); //父类对象获得子类实例,子类对象即是父类对象

  x2.toString(); //运行时多态

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

  这分为两种情况:

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

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

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

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

 

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

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

JAVA的就业方向10-09

Java 的分支结构10-27

java的应用范围06-24

Java的不同版本10-28

java如何构造09-21

java多线程08-31

Java模拟试题04-27

java的多线程09-09

Java语言的优点07-12