重写,重载

JAVA中重载和重写的区别

1>重载(Overloading)
(1):方法重载让类以统一的方式处理不同类型的数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
(2):Java的方法的重载,就是类中可以创建多个方法,他们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给他们不同的参数个数和参数类型来决定具体使用哪个方法,这就是多态性。
(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不同。无法以返回型作为重载函数的区分标准。
2>重写(Overriding)
(1):父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)在java中,子类可以继承父类中的方法,而不需要采用方法的重写。方法重写又称为方法覆盖。
(2)若子类中的方法与父类中的某一类方法具有相同的方法名,返回类型和参数表,则新方法将覆盖原有的方法。如果父类中原有的方法,可以使用super关键字,该关键字引用了当前类的父类。
(3)子类函数的访问修饰权限不能少于父类的。
3>动态绑定的内幕:
(1):编译器检查对象声明的类型和方法名,从而获取所有候选方法。
(2):重载决策:编译器检查方法调用的参数类型,从上述候选方法选出唯一的那个(期间会有隐含类型转化)。如果编译器找到多余一个或者没找到,此时编译器会报错。
(3):若方法类型为private static final ,java采用静态编译,编译器会准确知道该调用哪个方法。
(4):当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用对象的实际类型相匹配的方法版本。
总结:多态性是面向对象编程的一种特性,和方法无关,简单说,就是同样的一种方法能够根据输入数据的不同,做出不同的处理,即方法的重载——有不同的参数列表(静态多态性),而子类继承父类的相同方法时,输入的数据是一样的,但是要做出有别与父类的响应时,你就要覆盖父类的方法,即在子类中重写该方法——相同参数,不同实现(动态多态性)

重写方法的规则:
(1):参数列表必须完全与被重写方法相同,否则不能称为重写,而是重载。
(2):返回的类型必须一直与被重写的方法的返回类型相同,否则不能称为重写而是重载。
(3):访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private).
(4):重写方法一定不能抛出检查异常IOException在重写这个方法就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。
重载的规则:
(1):必须具有不同的参数列表;
(2):可以有相同的返回类型,只要参数列表不同就可以了
(3):可以有不同的访问修饰符;
(4)可以抛出不同的访问异常;
重载,重写主要区别:
重写多态性起作用,对调用被重载过的方法可以大大减少代码的输入量,同一个方法名只要往里面传递不同的参数就可以拥有不同的功能或者返回值。用好重写和重载可以设计一个结构清晰而简洁的类,可以说重写重载在编写代码过程中作用非同一般。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值