您的位置:首页 > 编程语言 > Java开发

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

2017-10-13 16:15 363 查看
问:什么是重写(override)

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

问:为什么要重写


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

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

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

方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型,

子类抛出异常小于等于父类方法抛出异常,

子类访问权限大于等于父类方法访问权限。


问:重载(Overriding)的定义

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

问:如何区分重载

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

问:为什么要重载

答:方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。

重载的规则: 
1.必须具有不同的参数列表; 
2.可以有不同的返回类型,只要参数列表不同就可以了; 
3.可以有不同的访问修饰符; 
4.可以抛出不同的异常;


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

答:什么是多态?

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

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

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


多态存在的三个必要条件

一、要有继承;

二、要有重写;

三、父类引用指向子类对象。


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


答:编译时多态主要指的是函数的重载,根据实际参数的数据类型、个数和次序,Java在编译时能够确定执行重载方法中的哪一个。[b]运行时多态性主要运用到动态绑定,就是在运行时动态的确定调用的是哪一个函数。 方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: