java语言中重载与重写的区别 一、重载 1、发生在本类中 2、方法名相同 3、参数列表必须不一致 4、与返回值无关 5、与访问修饰符无关 public class Test { public void out(){ System.out.println("参数的区别:"); } //参数数量不同 public void out(int a){ System.out.println("1、参数数量不同"); } //参数类型不同 public void out(String b){ System.out.println("2、参数类型不同"); } public static void main(String[] args) { Test test = new Test(); test.out(); test.out(10); test.out("10"); } } // 输出结果: // 参数的区别: // 1、参数数量不同 // 2、参数类型不同 二、重写 1、必须在继承关系中 2、方法名相同 3、参数列表相同 4、返回值类型与父类相同 5、访问修饰符可与父类相同或是比父类更宽泛 public class Demo01 { public static void main(String[] args) { Dog dog = new Dog(); dog.eat();//重写后,优先执行子类重写之后的版本 } } //父类中定义有属性和方法 class Animal{ String breed; int age; public void eat() { System.out.println("动物在吃..."); } } //子类继承了父类的属性和方法后,重写了父类的eat()方法 class Dog extends Animal{ public void eat() { System.out.println("狗在吃骨头..."); } } // 输出结果: // 狗在吃骨头... 三、区别 1、重载必须在同一个类中,重写必须建立在继承关系中 2、方法名都相同 3、重载的参数列表必须不一致,重写必须一致 4、重载与返回值无关,重写返回值必须一致 5、重载与访问修饰符无关,子类重写的方法不能比父类方法更严谨