Java是一门面向对象的编程语言,提倡多态性,也就是同一个方法在不同的对象中的行为表现不同。
一、Java如何实现多态性
Java实现多态性主要有两种方式:静态多态性和动态多态性。
静态多态性
静态多态性是指通过重载方法和方法的重载实现多态性,在编译期确定调用哪个方法,也称为编译时多态性。
代码示例:
public class StaticPolymorphism {
public void method(){
System.out.println("method A");
}
public void method(String str){
System.out.println("method B");
}
public void method(int a){
System.out.println("method C");
}
}
//使用
StaticPolymorphism sp = new StaticPolymorphism();
sp.method(); // method A
sp.method("test"); // method B
sp.method(123); // method C
动态多态性
动态多态性是指通过重写父类的方法实现多态性,在运行时动态绑定,也称为运行时多态性。
代码示例:
public class Animal{
public void sound(){
System.out.println("Animal makes a sound");
}
}
public class Cat extends Animal{
public void sound(){
System.out.println("Cat meows");
}
}
public class Dog extends Animal{
public void sound(){
System.out.println("Dog barks");
}
}
//使用
Animal animal;
animal = new Cat();
animal.sound(); // Output: Cat meows
animal = new Dog();
animal.sound(); // Output: Dog barks
二、 类多态性有两种实现方式
1. 继承
继承是Java中实现类多态性的最基本的方式。通过继承,子类可以从父类中继承所有的非私有属性和方法,从而可以在子类中实现父类的方法或添加新的方法。
代码示例:
public class Animal{
public void sound(){
System.out.println("Animal makes a sound");
}
}
public class Cat extends Animal{
public void sound(){
System.out.println("Cat meows");
}
}
public class Dog extends Animal{
public void sound(){
System.out.println("Dog barks");
}
}
//使用
Animal animal;
animal = new Cat();
animal.sound(); // Output: Cat meows
animal = new Dog();
animal.sound(); // Output: Dog barks
2. 接口
接口是Java中另一种实现类多态性的方式。接口定义一组方法,任何实现该接口的类都必须实现这些方法。这意味着实现此接口的不同类可以执行相同的操作并产生不同的结果。
代码示例:
public interface Animal{
void sound();
}
public class Cat implements Animal{
public void sound(){
System.out.println("Cat meows");
}
}
public class Dog implements Animal{
public void sound(){
System.out.println("Dog barks");
}
}
//使用
Animal animal;
animal = new Cat();
animal.sound(); // Output: Cat meows
animal = new Dog();
animal.sound(); // Output: Dog barks
三、总结
Java多态性是面向对象编程的重要概念。它通过不同的实现方式实现代码的可重用性和灵活性,使得程序员可以避免重复性代码和简化程序开发过程。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/247480.html
微信扫一扫
支付宝扫一扫