java重写和重载的区别总结_java覆盖和重载

java重写和重载的区别总结_java覆盖和重载重写只存在于子类与父类中,重载存在于一个类中。具体区别如下:一、重写(override)override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则:1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protecte…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

重写只存在于子类与父类中,重载存在于一个类中。

具体区别如下:

一、重写(override)

override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。

重写(覆盖)的规则:

1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.

2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。

3、重写的方法的返回值必须和被重写的方法的返回一致;

4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没s有对其进行重写。

6、静态方法不能被重写为非静态的方法(会编译出错)。

二、overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。

重载的规则:

1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);

2、不能通过访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。

一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。

继承是子类获得父类的成员,重写是继承后重新实现父类的方法。重载是在一个类里一系列参数不同名字相同的方法。多态则是用基类的引用指向子类的对象。

网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。

下面的例子包含了这四种实现:

//Triangle 继承Shape类

class Triangle extends Shape {

//重写Shape类中的getSides方法

public int getSides() {

return 3;

}

}

//Rectangle 继承Shape类

class Rectangle extends Shape {

//重载Shape类中的getSides方法(在父类中getSide方法中添加了参数)

public int getSides(int i) {

return i;

}

}

//父类

public class Shape {

public boolean isSharp(){

return true;

}

public int getSides(){

return 0 ;

}

public int getSides(Triangle tri){

return 3 ;

}

public int getSides(Rectangle rec){

return 4 ;

}

public static void main(String[] args) {

Triangle tri = new Triangle();

System.out.println(“Triangle is a type of sharp? ” + tri.isSharp());

//isShape()为父类中的方法,Triangle中没有,所以tri.isSharp()方法为继承父类中的方法

Shape shape = new Triangle();

//new一个对象为Triangle的Shape实例(和new一个对象为dog的animal实例一样理解)

//此为父类的多态

System.out.println(“My shape has ” + shape.getSides() + ” sides.”);

}

}

比较就可以发现多态对重载的优点:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197729.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pyecharm激活码_通用破解码「建议收藏」

    pyecharm激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    41
  • 基于android点餐系统需求分析,基于Android的点餐系统的设计及实现

    基于android点餐系统需求分析,基于Android的点餐系统的设计及实现内容简介:基于Android的点餐系统的设计及实现,毕业论文,共58页,20083字,附开题报告、答辩文稿、源程序。摘要随着无线网络(如4G、3G、GPRS)及无线网络技术与移动操作系统的不断发展,移动生活逐渐成为社会的主流。现如今,许多餐饮企业仍然采用传统人工式服务,使服务质量、效率变得很差。为了改变这一现状,本设计将介绍一种基于Android的无线点餐系统。这种点餐系统包括服务器端与客户端,…

    2022年6月19日
    25
  • python3画图中文乱码_pycharm 画图中文乱码

    python3画图中文乱码_pycharm 画图中文乱码importmatplo pyplotasplti 出现中文乱码原因 matplotlib 中找不到中文字体解决方法 1 找到中文字体文件的地址和字体文件名通常 C Windows Fonts 字体文件名 2 加载字体 zh font matplotlib font manager FontProperti fname C Windows Fon

    2025年7月8日
    2
  • nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题

    nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题用了nginx负载均衡后,在两台tomcat正常运行的情况下,访问http://localhost速度非常迅速,通过测试程序也可以看出是得到的负载均衡的效果,但是我们试验性的把其中一台tomcat(serverlocalhost:8080)关闭后,再查看http://localhost,发现反应呈现了一半反映时间快,一半反映时间非常非常慢的情况,但是最后都能得到正确结果。解决办法:问题解决,主要是proxy_connect_timeout这个参数,…

    2022年7月23日
    14
  • 三种查看MySQL数据库版本的方法

    三种查看MySQL数据库版本的方法

    2021年10月18日
    86
  • 电机控制foc算法讲解_电机算法需求

    电机控制foc算法讲解_电机算法需求最近做完了一个直流无刷电机的电机调速项目,查阅了各种大神所写的博客和论文,在这里我只做一下小小的总结;FOC(FiledOrientedControl)是采用数学方法实现三相马达的力矩与励磁的解耦控制。主要是对电机的控制电流进行矢量分解,变成励磁电流IdIdId和交轴电流IqIqIq,励磁电流主要是产生励磁,控制的是磁场的强度,而交轴电流是用来控制力矩,所以在实际使用过程中,我们常…

    2025年12月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号