首页 > 编程知识 正文

java方法的重写,java面向对象

时间:2023-05-03 21:01:27 阅读:153041 作者:3691

重写和过载的区别

改写方法的规则如下。

参数列表:必须与被重写方法的参数列表完全匹配。

返回类型:必须与在超类重写的方法中声明的返回类型或子类型完全相同

访问级别:不能强于被重写的方法。 也可以比被改写的方法弱。

非检查异常:无论被重写的方法是否声明了该异常,重写方法都可以抛出非检查异常。

检查异常:改写方法必须抛出新的检查异常或比改写方法中声明的检查异常更宽的检查异常

无法将标志改写为final,static的方法

过载方法规则:

参数列表:重载的方法需要更改参数列表。

返回类型:用于更改返回类型。

修饰符:可以更改修饰符

异常:可以宣布新的或更广泛的异常。

类动画{

公共void eat

}

}

以下说明了如何重写animal eat方法的各种重载实例,并根据上述规则确定其是否正确。 以下方法都是Animal子类Horse的方法。

private void eat不是重载,因为编译、非法重写和访问修饰符的限制更强的参数列表没有更改

public void eat { } throwruntimeexception { }由编译重写,重写方法可以抛出任何未检查的异常。

公共void eat (throwioexception )不能进行编译和非法重写。 改写方法一定不能抛出新的检查异常或比改写方法中宣言的检查异常更宽的检查异常。 必须更改参数列表,才能过载,而不是过载

publicvoideat(stringfood ) }可以在编译中执行,而不是在重写中执行。 由于参数列表已更改,已合法重载。

由于是返回类型,因此无法编译public String eat。 不是重写。因为参数列表没有更改,所以不是过载。

可以在编译中而不是重写中使用publicstringeat(intn ) }。 超载了。 首先,参数列表必须更改,并且返回类型必须更改。

对父类重写的方法进行更改:

类动画{

公共安全(throwsioexception )。

返回空值;

}

}

公共动画eat () {return null; }通过编译,可以合法改写。 不抛出例外也没关系。 只要不抛出新的或更广泛的异常就可以了。

publicanimaleat (throwsfilenotfoundexception { return null; }可以编译的是重写,属于子类的非检查例外。

public Animal eat () throws Exception{} )不能编译、非法重写或抛出更广泛的异常。

public Horse eat将通过编译重写。 因为返回类型是重写的返回类型的子类。

过载(Overloading )

方法重载是一种使类能够统一处理不同类型数据的方法。 同时存在多个同名函数,且具有不同的参数数/类型。 超载Overloading是类内多态性的表现。

重载Java方法是指可以在类中创建具有相同名称但具有不同参数和不同定义的多个方法。 调用方法时,传递给它们的参数的数量和类型决定具体使用哪个方法是多态性的。 在、

重载时,方法名称必须相同,但参数类型和数量不同,返回类型可以相同也可以不同。 返回类型不能作为重载函数的区分标准。

重写(Overriding )

父类和子类之间的多态性重新定义父类的函数。 在子类中定义方法后,如果其名称和参数与其父类相同,则方法将被重写。 在Java中,子类继承父类的方法,并且不需要重写相同的方法。

但是,子类有时并不是直接继承父类的方法,而是想进行一定的修改,需要采用方法的改写。 方法重写也称为方法覆盖。

如果子类中的方法与父类中的方法具有相同的方法名称、返回类型和参数表,则新方法将复盖原始方法。 如果需要特定于父类的方法,请使用引用当前类的父类的super关键字。

子类函数的访问限定权限不能小于其父类。

总结:过载和重写(覆盖) ) ) )。

方法重写Overriding和过载Overloading是Java多态性的不同表现。 超载Overriding是父类和子类之间多态性的表现,超载Overloading是类内多态性的表现。 在子类中定义方法后,如果具有与其父类相同的名称和参数,则称为该方法

能被改写。 当子类中的对象使用此方法时,将调用子类中的定义。 对这一点来说,父类中的定义就像被“屏蔽”了一样。 此外,如果子类的方法名称、参数类型和数量与父类相同,则子类的返回类型必须与父类相同。 如果为一个类定义了多个同

的方法。 如果这些参数数量不同或参数类型不同,则称为方法重载(Overloading )。 Overloaded的方法可以改变返回值的类型。 这意味着重载的返回类型可以相同也可以不同。

数据

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。