Java中的重载和重写是面向对象编程中的两个概念。它们都是通过在方法中改变个别因素来实现方法的不同行为,从而改变程序的运行结果。
// 重载 public class OverloadingDemo { public static void main(String[] args) { OverloadingDemo obj = new OverloadingDemo(); obj.print();// 此时输出的是无参方法 obj.print("Java重载");// 此时输出的是有参方法 } // 无参方法 public void print() { System.out.println("Java"); } // 有参方法 public void print(String str) { System.out.println(str); } }
重载指在同一个类中,方法名相同,但参数列表不同的方法进行多次定义,以实现对同一个方法名的多重定义。在上述例子中,方法名都为print,但是一个有参数一个无参数,这就是方法重载的体现。
// 重写 class Animal { public void move() { System.out.println("动物可以移动"); } } class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } } public class TestDog { public static void main(String args[]) { Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();// 执行 Dog 类的方法 } }
重写是面向对象编程中的一种机制,是子类对父类的允许访问的方法的实现过程进行重新编写,即在子类中写一个方法,与父类的方法名相同,返回值也相同,而参数列表却不同。重写的目的是为了实现对父类的方法的改进,或添加一些新的功能,使子类对象在使用时更加灵活多变。