发布日期:2013-03-08 16:22 来源:许斌 标签: Java 多态性
 

在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。

1) 编译时多态

在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。

2) 运行时多态

由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

◇ 重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。

在例3-6中,父类对象a引用的是子类的实例,所以,java运行时调用子类B的callme方法。

【例3-6】
  import java.io.*;
  class A{
     void callme( ) {
      System.out.println("Inside A's callme()method");
     }
  }
  class B extends A{
     void callme( ) {
      System.out.println("Inside B's callme() Method");
     }
  }
  public class Dispatch{
     public static void main(String args[]) {
      A a=new B();
      a.callme( );
     }
  }

运行结果

 

◇ 方法重写时应遵循的原则:

1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。

2)改写后的方法不能比重写的方法产生更多的例外。

相关评论

专题信息
    本教程的主要讲解java语言的核心基础知识,使读者能有个良好的语言基础,为以后进一步提高打下基础。宗旨是帮助更多想学习java的朋友快速入门,如果你是一个Java语言的初学者,那么就从Java教程,java数组,java环境变量配置,java网络编程,技巧等这里开始学习Java吧!