方法重载与方法重写

来源:互联网 发布:windows系统编程 环境 编辑:程序博客网 时间:2024/06/06 13:13
方法重载:

方法重载是让类以一种统一的方式处理不同数据类型的一种手段,调用方法是通过传递不同的参数类型和参数个数来确定调用
哪一个方法,体现了面向对象的多态性。
特点:(1)、参数名相同,参数列表不同,参数类列表不同指得参数个数以及参数类型不同,
   (2)、可以有不同的返回值类型,
   (3)、可以有不同的访问权限,
   (4)可以抛出不同的异常,也可以不抛出异常


方法重写:

方法重写是指在继承关系中,父类的方法无法满足要求,需要对子类中的方法进行进行扩展,增强其功能,这时候需要对

方法进行重写
特点:(1)、子类中的方法与父类中的方法具有相同的返回值类型,方法名,参数列表
           (2)、子类中的方法的权限修饰符,其权限不能降低
说明:如果父类中的方法是protected,那么子类中重写的方法的修饰符只能为protected以及public,
不能为默认权限修饰符合private

             (3)、重写方法一定不能抛出新的检测异常,或者比被重写方法声明更加宽泛的的检测型异常
说明:如果父类抛出了异常,那么子类可以不抛出异常,或者抛出的异常是父类方法抛出的异常,或者父类方法中
抛出异常的子类,或者抛出非检测型异常(RuntimeException以及RuntimeException的子类)
示例:如果父类方法声明了一个检测异常IOException,重写这个方法不能抛出Exception,只能抛出IOException或者
IOException的子类,或者非检测型异常

非检测型异常:RuntimeException异常以及RuntimeException派生出来的异常,可以该异常进行处理,也可以不进行处理,
 它都能够通过检测。列如:NullPointException(空指针异常),IndexOutOfBoundsException(下标越界异常)
检测型异常:所有不是RuntimeException异常派生出来的异常,需要进行异常处理才能通过检测
列如:IOException、SQLException


面试中遇到的题目

题一:
class A{
protected int method1(int a,int b){
return 0;
}
}
下列哪些方法可以在A类的子类中使用
A、public int method1(int a,int b){return 0;}
B、private int method1(int a,int b){return 0;}
C、private int method1(int a,long b){return 0;}
D、public short method1(int a,int b){return 0;}
答案:AC
简析:主要考察子类重写父类的原则
B、子类重写父类的方法,权限不能够降低。上述A类中的方法为protected,那么子类中重写该方法的权限只能为protected,public
C、属于方法重载,方法重载的特点:方法名相同,参数列表不同,参数列表不同指的是参数类型和参数个数不同
D、方法重写的特点:返回值类型,方法名,参数列表相同

题二:
给出以下java代码,选项中那些方法可以添加到类Child中()

A、int addValue(int a,int b){//do something...}
B、public void addValue(){//do something...}
C、public int addValue(int a){//do something...}
D、public int addValue(int a,int b) throws Exception{//do something...}
E、public int addValue(int a) throws Exception{//do something...}
答案:BCE
A、子类方法重写父类方法,权限不能降低
B,C选项属于方法重载,方法重载的特点:参数名相同,参数列表不同,参数列表不同是指参数个数以及参数类型不同
D、方法重写时,如果父类中的方法没有抛出异常,那么子类中的方法抛出异常会报错
E、该选项属于方法重载

原创粉丝点击