Java中方法重载和方法重写的区别,详细描述,从介绍到语法再到区别

简介: Java中方法重载和方法重写的区别,详细描述,从介绍到语法再到区别

一、 方法重载

1.什么是方法重载?

         Java中方法的重载,就是在一个类中,有相同的方法名称,但形参不同的方法

2.方法重载的规则

                 * 在同一个类中
                 
                 * 方法名相同
                 
                 * 参数不同
                       
                         *个数不同
                        
                         *类型不同
                        
                         *顺序不同
                         
   简单来说:同一个类中,方法名相同,参数不同         
   
 注意:是否为重载关系,只看方法名和参数,跟返回值无关

案例1(参数个数不同)

public class Main {
    public static void main(String[] args) {
        
    }
    
    
    public  static  void  add(int a,int b){
        
    }

    public  static  void  add(int a,int b,int c){

    }
    
}

执行效果

在这里插入图片描述


案例2(参数类型不同)

public class Main {
    public static void main(String[] args) {

    }


    public  static  void  add(long  a,int b){

    }

    public  static  void  add(int a,int b){

    }

}

执行效果

在这里插入图片描述


案例3(参数顺序不同)

public class Main {
    public static void main(String[] args) {

    }


    public  static  void  add(long  a,int b){

    }

    public  static  void  add( int b,long a){

    }

}

执行效果

在这里插入图片描述


注意

     这里的顺序不同,一定要是不同类型的顺序不同,
     而不能是同类型的顺序不同而已,要不然就不是重载会报错

例子

public class Main {
    public static void main(String[] args) {

    }


    public  static  void  add(int   a,int b){

    }    //报错

    public  static  void  add( int b,int a){

    }   //报错

}

在这里插入图片描述


3.方法重载的作用

            * 统一方法名,提高方法的兼容性和灵活性,方便调用者使用方法
                
            * JDK中大量使用了方法重载,比如println方法就是重载,目的是调用println时只需要记住一个名字,使用方便

二、方法重写

1.什么是方法重写?

          *子类中对父类已有的方法重新实现功能

          *当子类和父类有相同的功能,但父类的该功能不满足子类的需求时,子类可以重写父类中的方法。

案例

public class Animal {

    public void run(){
        System.out.println("运动");
    }
}
public class Dog extends  Animal{


    //方法重写:在继承父类的方法基础上,进行方法的升级改造


    @Override   //注解,检查重写的语法是否正确,如果错误会报错
    public void run() {
        System.out.println("四条腿跑");
    }
}

2.方法重写的前提

           要有继承关系,在子类可以重写方法

3.方法重写的规则

         *方法名、参数列表、返回值类型都保持不变,和父类一样
         
         *子类重写的方法,访问权限要大于等于父类方法的权限
                    private -> default -> protected -> public
                    
         *私有方法和静态方法不能被重写   
         
         
             tips: @Override注解可以检验重写格式

案例

在这里插入图片描述


三、两者的区别

                                方法重载                                 方法重写
                            
         概念            同一个类中,方法名相同,参数不同        方法名、参数列表、返回值类型都保持不变,和父类一样
                
         范围                   同一个类中                           要有继承关系,在子类可以重写方法
         
         限制                  没有访问限制                        *子类重写的方法,访问权限要大于等于父类方法的权限
         
                                                                  *私有方法和静态方法不能被重写      

作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
30天前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
45 1
|
1月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
32 2
|
4天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
21天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
29天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
30天前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
22 1
|
30天前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
24 1
|
1月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
Kotlin语法笔记(28) -Kotlin 与 Java 混编
25 2
|
1月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
30 0
|
1月前
|
Java
Java代码解释静态代理和动态代理的区别
### 静态代理与动态代理简介 **静态代理**:代理类在编译时已确定,目标对象和代理对象都实现同一接口。代理类包含对目标对象的引用,并在调用方法时添加额外操作。 **动态代理**:利用Java反射机制在运行时生成代理类,更加灵活。通过`Proxy`类和`InvocationHandler`接口实现,无需提前知道接口的具体实现细节。 示例代码展示了两种代理方式的实现,静态代理需要手动创建代理对象,而动态代理通过反射机制自动创建。
下一篇
无影云桌面