多态是一种更加方便的代码编写方法,它将子类中的相同的方法提到父类中,当子类继承时可以重写父类方法,从而提高代码利用率。
比如当一个人毕业后买了一辆五菱宏光,我们会可以定义一个五菱宏光类来编写五菱宏光的百米加速方法。但是当用户需求改变,比如过了几年后张三发财了,又换了一辆宝马,那么当我们修改代码时不仅需要创建一个新的宝马类,还需要去改相关的所有继承了或者引用五菱宏光类的测试类。
由于可以在父类中可以指向子类,所以我们可以得到以下结论。
当我们用多态的方法去编写时我们可以创建一个车类并定义一个百米加速度方法,然后在具体的子类中去重写父类的百公里加速度方法,这样在之后换车时我们只需要重新定义一个新类并重写父类方法。
具体如下:
我们拥有两个类‘BaoMa’类和‘WiLing’类,即宝马类和五菱类。我们还拥有一个测试类Textcar,我们在类中有一个方法‘Have’,在这个方法中我们接收从测试中传来的汽车型号‘model’,然后将汽车型号赋值到测试类中的变量‘model’。
即:public void Have(Car model){
this.model = model;
}
然后定义一个起步方法‘Starting’,在此方法中定义‘model.KilometersTime’,因为我们在上面就已经将车的型号赋值给了model,因此在程序执行时即为型号.KilometersTime, 也就是调用相关类中已经重写的百公里加速方法。
具体代码如下(由goumutian911的【超经典】Java多态有什么好处?怎样用?改编引用文章连接:(1条消息) 【超经典】Java多态有什么好处?怎样用?_guomutian911的博客-CSDN博客_java 多态优点):
//父类驾驶
public abstract class Driver{
/*属性*/
public void KilometersTime();//让子类来运行
}
//子类宝马,继承了父类驾驶
public BaoMa extends Driver{
public void KilometersTime(){
System.out.println("宝马的百公里加速所需时间为3.8秒");//在子类中重写父类方法
}
}
//子类五菱宏光,继承了父类驾驶
public WuLing extends Driver{
public void KilometersTime(){
System.out.println("五菱宏光的百公里加速所需时间为3.5秒");//在子类中重写父类方法
}
}
//定义一个人类
public class Person{
private Driver model;//定义型号
public Person(){
//无参构造
}
public Person(Driver model){
this.model = model;//有参构造
}
public void Starting(){
model.KilometersTime();//将型号确定后调用相关类中的方法
}
public void setDriver(Driver model){ //运用参数多态,以后方便修改车型
this.model = model; //将型号赋值
}
//测试类
public static void main(String args[]){
Person p =new Person();
WuLing wl = new WuLing(); //刚开始没钱就买辆五菱吧
p.setDriver(wl);//将型号传给model并赋值
p.drive();//调用相关方法
BaoMa bm = new BaoMa{();//有钱换车了
p.setDriver(bm);
p.drive();
}
}