在Java编程语言中,多态、重载和重写是常用的面向对象编程的概念。虽然它们都与方法相关,但是它们具有不同的意义和使用方法。
多态是一种特性,允许不同的对象对相同的方法进行调用,在运行时确定对象的类型并执行相应的方法。这是Java编程语言中的一项重要而强大的特性。多态通过继承和实现接口来实现。以下是多态的示例:
class Animal{ void sound(){ System.out.println("Some sound"); } } class Cat extends Animal{ void sound(){ System.out.println("Meow"); } } class Dog extends Animal{ void sound(){ System.out.println("Bark"); } } class Test{ static void makeSound(Animal a){ a.sound(); } public static void main(String args[]){ Animal a1 = new Animal(); Animal a2 = new Cat(); Animal a3 = new Dog(); makeSound(a1);//Some sound makeSound(a2);//Meow makeSound(a3);//Bark } }
在上面的示例中,makeSound() 方法是多态的。这个方法接收一个 Animal 对象,但具体传递的是哪个类型的 Animal 对象,最终执行的方法将由传递的对象决定。
重载是在同一类中定义多个方法,方法名相同但定义不同的参数类型和个数。在编译时通过传递的参数类型和个数来决定具体的方法,并执行相应的逻辑。以下是重载的一个示例:
class Addition{ static int add(int a, int b){ return a+b; } static int add(int a, int b, int c){ return a+b+c; } } class Test{ public static void main(String args[]){ System.out.println(Addition.add(11, 11)); System.out.println(Addition.add(11, 11, 11)); } }
在上面的示例中,我们定义了两个同名的方法,但是传递的参数是不同的。在执行时,根据不同的参数类型和个数来决定具体的方法。
重写是指在子类中定义一个与父类方法声明完全相同的方法,覆盖父类方法的实现。继承是实现重写的前提条件。以下是重写的一个示例:
class Animal{ void sound(){ System.out.println("Some sound"); } } class Cat extends Animal{ void sound(){ System.out.println("Meow"); } } class Test{ public static void main(String args[]){ Animal a = new Cat(); a.sound(); //Meow } }
在上面的示例中,我们定义了一个 Animal 类和一个 Cat 类。Cat 类继承了 Animal 类并重写了 sound() 方法。在 main() 方法中,我们使用 Animal 类型的引用来表示 Cat 对象,并调用了 sound() 方法。由于 Cat 类重写了 sound() 方法,因此输出将为 "Meow"。