java重写(override)和重载(Overriding)--->多态的体现

问:什么是重写(override)

答:子类继承父类,子类有一个与父类相同参数签名的方法,并且需要重新定义此方法,此为重写。

问:为什么要重写

答:子类可继承父类中的方法,而不需要重新编写相同的方法,但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

方法重写又称方法覆盖,是父类与子类多态性的一种表现。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法,如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

重写遵守的两同两小一大原则:

方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。


问:重载(Overriding)的定义

答:在一个类中,如果出现了两个或者两个以上的同名函数,只要它们的参数的个数,参数的顺序或者参数的类型不同,即可称之为该函数重载了。

问:如何区分重载

答:当函数同名时,只看参数列表的区别,与返回值类型和修饰符没关系。

问:为什么要重载

答:方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
重载的规则: 
1.必须具有不同的参数列表; 
2.可以有不同的返回类型,只要参数列表不同就可以了; 
3.可以有不同的访问修饰符; 
4.可以抛出不同的异常;


上面我们分析了重写和重载,其实它们都是多态的体现,我们就顺便把多态拿出来再看看:

答:什么是多态?

多态是面向对象的三大特征之一(封装,继承,多态),封装和继承几乎都是为多态而准备的.

多态指的是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

实现多态的技术称为:动态绑定(dynamic binding)

多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。

问:运行时多态与编译时多态

答:编译时多态主要指的是函数的重载,根据实际参数的数据类型、个数和次序,Java在编译时能够确定执行重载方法中的哪一个。运行时多态性主要运用到动态绑定,就是在运行时动态的确定调用的是哪一个函数。 方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值