服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 浅谈java中的重载和重写的区别

浅谈java中的重载和重写的区别

2022-03-08 13:39张九日。 Java教程

本文主要介绍了java中的重载和重写的区别。具有一定的参考价值,下面跟着小编一起来看下吧,希望能够给你带来帮助

1.重载

重载指在一个类中,具有多个相同名称的方法,他们的参数列表却不相同

(参数类型不同、参数个数不同甚至是参数顺序不同)

重载对返回类型没有要求,可以相同也可以不同,但是不能返回类型来判断他们是否是重载。

例如

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package HelloWorld;
public class Zuoye {
    public static void main(String[] args) {
        Zuoye z = new Zuoye();
        z.fangfa1();
        z.fangfa1("张旭");
    }
    public void fangfa1() {
        System.out.println("方法1");
    }
    public void fangfa1(String name) {
        System.out.println("也是方法1,不过有参数"+ name);
    }
}

小结:

1.重载是一个类中多态性的一种表现

2.重载是在一个类中,具有相同名称不同参数列表的方法

3.重载不能根据返回类型的相同或者不同来区分重载函数。

2.重写

1.重写是指在不同类中,将父类的方法在子类中重新写一遍,子类继承了父类原有的方法,但有时又不想继承父类原有一模一样的方法,所以就在返回类型,方法名,参数列表相同的情况下,对方法体进行修改进行重写,这就是重写。但注意的是 子类的访问修饰符不能比父类的更严格(意思就是父类的访问修饰符要更加 严谨,权限更少,父亲严格)

例如

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package HelloWorld;
public class Father {
     public static void main(String[] args) {
            Son s = new Son();
            s.fangfa();
    }
    public void fangfa() {
        System.out.println("我是爸爸的方法");
    }
}
class Son extends Father {
    public void fangfa() {
        System.out.println("我是儿子的方法");
    }
}

返回结果是

浅谈java中的重载和重写的区别

小结:

1. 发生在父类和子类关系之间

2. 他们的返回类型,方法名,列表参数相同 方法体不同。

3.子类不能比父类更严格 ,(父亲比儿子严格)。

4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

浅谈java中的重载和重写的区别

private 最严格。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

public : 对所有类可见。使用对象:类、接口、变量、方法

总结重载和重写的区别:

答:方法的重载和重写都是实现多态的方式 ,区别在于重载实现的是编译时的多态性,重写实现的运行时的多态性。

重载是在发生在同一个类中,他们有相同的方法名 ,但有不同的参数列表,重载对返回类型没有特别要求,不能根据返回类型来进行区分 。

而重写发生在不同类中,发生在子类和父类之间的,重写要求子类与父类的被重写方法具有相同的返回类型,名称和参数列表。 但他们的方法体要不同。 同时,父类相较于子类,他的访问修饰符会更加严格,即访问范围更小。比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则) 。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/chengxuzx/article/details/121034510

延伸 · 阅读

精彩推荐
  • Java教程@feignclient名字冲突的解决方案

    @feignclient名字冲突的解决方案

    这篇文章主要介绍了@feignclient名字冲突的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    微风灬浮尘4062022-02-24
  • Java教程SpringBoot2.0集成Swagger2访问404的解决操作

    SpringBoot2.0集成Swagger2访问404的解决操作

    这篇文章主要介绍了SpringBoot2.0集成Swagger2访问404的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    xqnode17222020-09-29
  • Java教程springboot集成mybatis实例代码

    springboot集成mybatis实例代码

    本篇文章主要介绍了springboot集成mybatis实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    店蛋蛋1732020-09-15
  • Java教程mybatis insert foreach循环插入方式

    mybatis insert foreach循环插入方式

    这篇文章主要介绍了mybatis insert foreach循环插入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    学亮编程手记8972021-10-07
  • Java教程基于多线程并发的常见问题(详解)

    基于多线程并发的常见问题(详解)

    下面小编就为大家带来一篇基于多线程并发的常见问题(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    tonghun10772021-01-15
  • Java教程MyBatis中#{}占位符与${}拼接符的用法说明

    MyBatis中#{}占位符与${}拼接符的用法说明

    这篇文章主要介绍了MyBatis中#{}占位符与${}拼接符的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    pan_junbiao6712021-08-12
  • Java教程Java开发岗位面试被问到泛型怎么办

    Java开发岗位面试被问到泛型怎么办

    泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。java泛型知识点也是Java开发岗位必问的一个话题,今天小编就给大家普...

    蛋挞学姐8342021-10-15
  • Java教程Spring 实现给Bean属性注入null值

    Spring 实现给Bean属性注入null值

    这篇文章主要介绍了Spring 实现给Bean属性注入null值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    xiaojia11003822021-12-08