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)
上一篇 2025年8月29日 上午9:43
下一篇 2025年8月29日 上午10:22


相关推荐

  • ssh命令带密码_ssh远程登录命令明文密码

    ssh命令带密码_ssh远程登录命令明文密码ssh命令带密码有时候,我们在写脚本的时候,我们ssh到一台客户机执行命令的时候,如果客户机设置了密码,这时候,就会提示我们需要通过交互式的方式输入密码。当我们不想执行这一步操作的时候,我们可以在ssh的同时带上密码,不用我们手动输入。先安装一个软件包yuminstall-ysshpass只需要在ssh命令的前面带上sshpass就可以了sshpass-p’redhat’s…

    2022年10月19日
    3
  • 接口、多态

    接口、多态

    2021年5月19日
    133
  • docker上传镜像到私有仓库_docker仓库的创建

    docker上传镜像到私有仓库_docker仓库的创建Docker私有仓库的搭建、配置,镜像上传至私有仓库案例演示。

    2025年6月2日
    6
  • 今天开始做战斗,回合制战斗代码实现第二篇,九宫格战斗

    今天开始做战斗,回合制战斗代码实现第二篇,九宫格战斗说到九宫格战斗 就不能不提一款游戏 神仙道 在神仙道之前 九宫格战斗的模式就在几款游戏里面有应用 但神仙道是真真正正把这种战斗模式发扬光大的里程碑 当时无论口碑 还是市场占有率都可以说是空前的 这款游戏我玩到 150 级 可以说是投入精力比较大的一款游戏 在游戏里面也交了很多朋友 虽然最近这种游戏模式因为一些原因走下坡路 现阶段刀塔传奇这种模式的游戏很吃香 不过既然说回合制游戏 那么就还是讨论一下

    2026年3月16日
    2
  • java经典入门教程(java从入门到精通第几版好用)

    刚开始学习java的时候,可能是一头雾水,不知道从何学起,这里跟大家分享一下!(仅仅只供初级学者学习,大佬勿喷)一、初始java1.生活中的程序:从起床到教室上课的过程穿衣打扮》起床》洗漱》出宿舍》》吃早餐》到教室按照特定的顺序去完成某一件事的过程我们叫做生活中的程序2.计算机中的程序:一组有序指令的集合,需要和计算机交流就要使用计算机语言,java就是计算机语言的一种3.java…

    2022年4月16日
    53
  • Mybatis分页插件-PageHelper的使用

    Mybatis分页插件-PageHelper的使用Mybatis分页插件-PageHelper的使用怎样配置mybatis这里就不提了,我来说说我配置这个分页插件的过程吧。下载JAR包分页插件pagehelper.jar:https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/http://repo1.maven.org/ma

    2022年5月22日
    43

发表回复

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

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