java面试题--重写与重载的区别

重写与重载的区别有哪些?
方法的重写是指两个方法的返回值、方法名、参数的类型和个数相同(子类重写父类的方法)
方法的重写,不能发生在同类中,只能发生在子类中。
若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
方法重写的权限:子类中的权限大于或等于父类的权限,(修饰符高低:private < 默认修饰符<protected < public)
特殊情况:子类不能重写父类被声明为private权限的方法

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/690395
  • 以下回答由chatgpt基于相关博客总结生成:

    重写和重载是Java语言中的两个重要概念,它们都涉及到函数的定义和使用。

    1. 重载 函数的重载是指在一个类中可以定义多个同名的函数,但这些函数有不同的参数列表。在Java中实现函数重载的关键是函数的参数列表,Java编译器会根据函数的参数个数、类型和顺序等信息来区分不同的同名函数。函数重载可以提高代码的复用性和可读性。

    需要注意的细节有:

    • 函数名称必须相同。
    • 参数列表必须不同(个数不同、类型不同、顺序不同)。
    • 返回类型可以相同也可以不同,但不能仅仅是返回类型不同而已。
    • 重载时应具有明显不同的功能,如参数个数或类型不同。

    以下是一个重载的例子:

    public class MathUtils {
        public int add(int a, int b) {
            return a + b;
        }
    
        public double add(double a, double b) {
            return a + b;
        }
    }
    
    1. 重写 函数的重写是指在子类中定义一个与父类中同名、同参数列表、同返回值类型的函数,但实现不同。重写可以实现多态,在运行时调用子类的方法。

    需要注意的细节有:

    • 要被重写的函数必须是父类的方法,不能是父类定义的静态方法。
    • 重写的方法必须与被重写的方法有相同的方法名、参数列表和返回类型。
    • 重写的访问修饰符不能比被重写的方法的访问修饰符更严格。
    • 重写的方法不能抛出比被重写的方法更宽泛的异常。

    以下是一个重写的例子:

    public class Animal {
        public void move() {
            System.out.println("Animal moves.");
        }
    }
    
    public class Dog extends Animal {
        @Override
        public void move() {
            System.out.println("Dog runs.");
        }
    }
    

    当调用Dogmove()方法时,会输出Dog runs.

    总结: 重载是一个类中定义多个同名但参数列表不同的函数,重写是子类实现一个与父类同名参数列表相同但实现不同的方法。在Java中,重载和重写是实现多态的两个基本手段。在使用重载和重写时,需要注意方法参数、返回值、访问修饰符和异常等细节,以确保正确地实现多态。

。你是不是发错这里了,应该是给自己记录的