java的重写与重载

1、重载(Overloading)

    方法的重载一定只是参数的类型或个数不同,而方法的返回值相同

    可以用相同的方法名但不同的参数列表来定义方法(参数表中参数的数量、类型或次序有差异)的重载。

两个规则适用于重载方法:

1)调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用。正常的拓展晋升(如单精度类型float到双精度类型double)可能被应用,但是这样会导致在某些条件下的混淆

2)方法的返回类型可以各不相同,但它不足以使返回类型变成唯一的差异。重载方法的参数表必须不同。

    对于this的任何调用,如果出现,在任何构造方法中必须是第一个语句

 

2、重写(Overriding)

    子类定义同名方法来覆盖父类的方法,是多态技术的一个实现。当父类方法在子类中被覆盖时,通常是子类版本调用父类版本,并做一些附加的工作。

注意事项:

1)不使用super而希望引用父类方法会导致无限的递归,因为子类方法实际上是在调用它自己

2)当通过父类引用调用一个方法时,java会正确地选择与那个对象对应的类的覆盖方法

3)方法覆盖中,子类在重新定义父类已有的方法时,应保持与父类完全相同的方法声明,即与父类完全相同的方法名,返回值和参数列表

4)子类可以添加字段,也可以添加方法或者覆盖父类中的方法,然而继承不能去除父类中的任何字段和方法。final类是不可以被继承的,例如String类是final类故不可继承。

 

3、发生在父类和子类之间的同名方法之间的方法覆盖(重写)要满足以下规则:

1)两个方法的返回值类型必须相同

2)两个方法的参数类型、参数个数、参数顺序必须相同

3)子类方法点的权限必须不小于父类方法的权限private<defalut<public

4)子类方法只能抛出父类方法声明抛出的异常或异常子类

5)子类方法不能覆盖父类声明为final或者static的方法

6)子类方法必须覆盖父类中声明为abstract的方法

 

4、重写与重载的区别

重写和重载是java多态性的不同表现。

重写是父类与子类之间多态性的一种表现,可以改变返回值的类型

重载是一个类中多态性的一种表现

1)首先重载和重写他们所处的作用域范围不同。重载是在同一个类中进行方法的定义,重写是在父子类中进行方法的定义。

2)其次,他们的定义方式也不同。重载是方法名相同,参数列表不同。而重写是方法名相同参数列表也相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值