多态

本文介绍了多态的概念,并通过具体的代码示例展示了如何利用多态提高代码的可维护性和灵活性。对比了多态前后代码的变化,解释了多态带来的好处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态的定义:就是用基类的引用指向子类的对象。

好处:解决代码紧偶合的问题   就是说通过相对更难的逻辑,方法,来换取代码的可维护性,代码量 

具体一个列子:

在Object类中的equals(Object obj)方法中,参数是个Object

类型的参数.因为Object是Java中所有类的基类.,但是才传入参数的时候,可以传入任何一个类的对象
这就是多态的应用! 

//通过传入的object的子类的不同实现同一方法的调用而产生不同的结果

这是一个买车然后人用车的几个类 

public class Benz{    1车
public void run(){
       System.out.println("Benz在以200迈的速度在run");
}
}

public class Benz{    2 车
public void run(){
       System.out.println("Benz在以200迈的速度在run");
}
}

public class Person{  3人

    /*
public void drive(JD jd){
       jd.run();
}
*/

public void drive(Benz b){
       b.run();
}

public static void main(String args[]){
   Person p =new Person();
   Benz b = new Benz();
   p.drive(b);
}
}

这是再没有用到多态的情况下

下面的 多态

 

public abstract class Driver{       //1基类
   /*属性*/
   public void run();//让子类来运行
}

 

public Benz extends Driver{     //2子类
   public void run(){
System.out.println("Benz在以200迈的速度在run");
   }
}
public JD extends Driver{     //3子类
   public void run(){
System.out.println("JD is running...");
   }
}

 

public class Person{     //4人
private Driver driver;
public Person(){

 

}
public Person(Driver driver){
   this.driver = driver;
}
public void drive(){
       driver.run();
}
public void setDriver(Driver driver){//运用参数多态,以后不管买什么车都可以
   this.driver = driver;
}

 


public static void main(String args[]){
   Person p =new Person();
   JD jd = new JD();//刚开始没钱就买辆JD吧
   p.setDriver(jd);
   p.driver();
   Benz benz = new Benz{();//有钱换车了
   p.setDriver(benz);
   p.driver();
}
}

可以看到:使用多态过后我们的类变为了4个了。逻辑也更为复杂,但是相应的我们的代码的可维护性变得更高了,即在还要加入一类车型的情况下。我们只需要在Drive的基类下添加一个类。然后在main函数里实力化新类,就可以为完成添加。直观的来说我们就是仅仅不用再去改变person里面的代码了。通过对基类的引用指向我们新车的对象。

 

转载于:https://www.cnblogs.com/wcss/p/6905625.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值