java的重载和重写实例_java中重写和重载的区别

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

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

具体区别如下:

一、重写(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/232243.html原文链接:https://javaforall.net

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


相关推荐

  • js 获取当前时间 年月日

    js 获取当前时间 年月日

    2022年2月23日
    57
  • 初学者:html中的表单详解(下面附有代码)

    初学者:html中的表单详解(下面附有代码)表单的理解与解释表单:采集不同类型的用户输入数据,发送给服务器,实现用户和服务器之间的数据交互。表单标签form声明数据采集的范围,只要是在form中的,都是要采集的数据。一个页面中可以有多个form标签,只能是并列关系,不能嵌套。只能是兄弟关系,,不能是父子关系。用户向服务器端发送数据时,一次只能提交一个表单中的数据。如果要提交多个表单就需要用js中的异步交互。表单元素method属性:提交表单时所用的http方法,默认为get方法。get方式:将数据作为url地址的一部分发送给服务器

    2022年8月11日
    6
  • arcgis多因子加权叠加分析_arcgis栅格数据矢量化

    arcgis多因子加权叠加分析_arcgis栅格数据矢量化白话空间统计二十四:地理加权回归(七)ArcGIS的GWR工具扩展参数说明近期无论是开发者大会,还是个人工作,相当的忙,所以停了一段时间……不过地理加权回归写到第七章,自我感觉也差不多了,无论是基础理论还是来历,包括基础参数的意义,都应该介绍得比较清楚了,当然,后面可能是大家更关心的内容,也就是在ArcGIS(或者其他软件里面),怎么去执行地理加权回归,执行完成之后,生成的结果又如何解读?

    2022年10月6日
    2
  • 使用Androidkiller或APKIDE编译APK文件时出现libpng error: Not a PNG file的错误

    使用Androidkiller或APKIDE编译APK文件时出现libpng error: Not a PNG file的错误 使用Androidkiller或APKIDE编译APK文件时出现提示:>W:libpngerror:NotaPNGfile>W:ERROR:FailureprocessingPNGimageD:\xin\AndroidKiller_v1.3.12018\projects\CFF_100\Project\res\mipmap-xxhdpi-v4\ic_…

    2025年7月30日
    5
  • PyCharm激活码永久有效PyCharm2020.1.4激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2020.1.4激活码教程-持续更新,一步到位PyCharm激活码永久有效2020.1.4激活码教程-Windows版永久激活-持续更新,Idea激活码2020.1.4成功激活

    2022年6月19日
    67
  • 小树剪发网1114_aow把抓

    小树剪发网1114_aow把抓乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 50 个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过 64 的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出格式为每组数据,分别输出原始木棒的可能最小长度

    2022年8月8日
    6

发表回复

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

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