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,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
5天前
|
存储 安全 Java
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
这篇文章是关于Java面试的第二天笔记,涵盖了HashMap与HashTable的区别、ConcurrentHashMap的实现原理、IOC容器的实现方法、字节码的概念和作用、Java类加载器的类型、双亲委派模型、Java异常体系、GC如何判断对象可回收、线程的生命周期及状态,以及sleep、wait、join、yield的区别等十道面试题。
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
|
5天前
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
11 1
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
|
7天前
|
存储 前端开发 JavaScript
【前端学JAVA】有手就会!10min快速入门java的基础语法(2)
【8月更文挑战第8天】10min快速入门java的基础语法
19 2
【前端学JAVA】有手就会!10min快速入门java的基础语法(2)
|
5天前
|
存储 关系型数据库 MySQL
一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)
这篇文章是关于Java面试中关于数据库性能优化和MySQL特性的五个问题,包括处理慢查询、ACID特性保证、MVCC概念、MySQL主从同步原理以及MyISAM和InnoDB存储引擎的区别。
|
7天前
|
Java API
Java语法Java语法
【8月更文挑战第12天】Java语法
19 3
|
5天前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
13 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
11天前
|
Java 关系型数据库 程序员
11 Java接口(语法、规范、微观&宏观接口)
11 Java接口(语法、规范、微观&宏观接口)
31 6
|
7天前
|
Java
IDEA——JAVA的快捷语法
IDEA——JAVA的快捷语法
19 0
|
8天前
|
Java
Java中notify 和 notifyAll有什么区别
【8月更文挑战第10天】Java中notify 和 notifyAll有什么区别
16 0