Java是一门面向对象的编程语言,它的核心思想是封装、继承和多态。这里介绍两个实现多态的重要概念:接口和重写。
接口是一种抽象类型,它定义了一些方法的签名,但没有具体的实现。接口可以被类实现,实现接口的类需要实现接口中定义的所有方法。一个类可以实现多个接口,这就为实现多态提供了便利。
public interface Flyable { void fly(); } public class Bird implements Flyable { public void fly() { System.out.println("Bird is flying."); } } public class Airplane implements Flyable { public void fly() { System.out.println("Airplane is flying."); } }
在上面的代码中,Flyable是一个接口,定义了一个fly()方法。Bird和Airplane类都实现了Flyable接口,并都重写了接口中的fly()方法。这样,在调用fly()方法时,可以通过Flyable类型来实现多态,即让程序在运行时根据对象的实际类型来确定调用哪个类的fly()方法。
重写是指子类实现了和父类相同的方法,并且在子类中重新定义了方法的实现。重写的方法必须和父类方法的签名完全相同,返回值、参数类型和个数都不能改变。
public class Vehicle { public void start() { System.out.println("Vehicle is starting."); } } public class Car extends Vehicle { public void start() { System.out.println("Car is starting."); } }
在上面的代码中,Car类继承了Vehicle类,并重写了它的start()方法。如果创建一个Car对象,并调用start()方法,程序会优先调用Car中的start()方法,输出"Car is starting."。如果强制将Car对象转换为Vehicle类型,再调用start()方法,程序则会调用父类Vehicle中的start()方法,输出"Vehicle is starting."。