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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 基于深度学习的人脸性别识别系统(含UI界面,Python代码)「建议收藏」

    基于深度学习的人脸性别识别系统(含UI界面,Python代码)「建议收藏」摘要:人脸性别识别是人脸识别领域的一个热门方向,本文详细介绍基于深度学习的人脸性别识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面。在界面中可以选择人脸图片、视频进行检测识别,也可通过电脑连接的摄像头设备进行实时识别人脸性别;可对图像中存在的多张人脸进行性别识别,可选择任意一张人脸框选显示结果,检测速度快、识别精度高。博文提供了完整的Python代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。

    2022年5月23日
    48
  • java实现cs架构_cs模型人物看不见

    java实现cs架构_cs模型人物看不见Java网络编程案例–CS模型的简单实现Java网络编程案例CS模型的简单实现基本概述程序原理图源代码基本概述该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传入的数据进行处理。在客户端行处理类,对数据进行一次解析,再调用各个发送类进行处理。采用固定的命令格式,字符编码格式以及字节流,实现了消息发送,二进制文件和文本文件传送,下载文件的功能。程序原理图源代码:J

    2022年9月16日
    1
  • 通过ffi在nodejs中调用动态链接库(.so文件)

    通过ffi在nodejs中调用动态链接库(.so文件)通过 ffi 在 nodejs 中调用 C 接口概述获取 C 接口的指针内容异步调用实际案例通过 ffi 在 nodejs 中调用 C 接口概述注意事项 ffi 只能调用 C 风格的模块 需要将 C 源码 build 成动态链接库以供调用 在 Linux 下将 C 源码 build 成 so 文件 在 windows 下 build 成 dll 文件 获取 C 接口的指针内容异步调用实际案例

    2025年11月7日
    1
  • RabbitMQ(三):Exchange交换器–fanout

    RabbitMQ(三):Exchange交换器–fanout

    2021年10月5日
    38
  • pycharm linux激活码_pycharm固定在Ubuntu

    pycharm linux激活码_pycharm固定在Ubuntu这里只介绍采用激活码激活的方法。如果是window系统则hosts文件路径为:C:\Windows\System32\drivers\etc,将0.0.0.0account.jetbrains.com添加到末尾即可。如下图所示:如果是linux系统 Linux的hosts文件路径为:/etc命令行输入:第一步:cd/etc第二步:sudogedithosts输…

    2025年5月22日
    4
  • c语言code用法_visual code c语言

    c语言code用法_visual code c语言此文章出处:http://www.cppblog.com/izualzhy/archive/2012/07/09/182456.html先看个例子:汉字一的UTF-8编码为0xE40xb80x80我们在google里搜索一下“一”,地址栏显示为:可以看到url的字符串里有一个%E4%B8%80这就是encode之后的值。因此,encode的处理过程也很明显了。特别是传中文参数时,如果没…

    2022年9月28日
    2

发表回复

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

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