Java多态

                                 Java多态

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

1.编译时多态

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

2.运行时多态

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

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

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

  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( );

     }

  }

3.方法override时应遵循的原则:

l         子类中override的方法和父类中被override的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体和限定类型不同。

l         override的方法不能比被override的方法有更严格的访问权限(可以相同)。

l         override的方法不能比被override的方法产生更多的例外。

4.方法overload时应遵循的原则:

l         Overload的方法必须是相同的名字

l         方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同

l         返回类型不能用来唯一区分overload的方法

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值