java语言 百分网手机站

Java的多态性

时间:2020-11-22 13:14:00 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的多态性】相关文章:

1.关于Java 反射的简介

2.关于java的学习捷径

3.关于循环的java代码示例

4.关于Java各种接口的介绍

5.关于Java动态实现的方法

6.关于Java多线程介绍

7.关于java调用bat文件的方法

8.关于Java中继承的初级理解