什么是多态?为什么用多态?有什么好处?多态在什么地方用?

什么是多态?为什么用多态?有什么好处?多态在什么地方用?

什么是多态?

概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。

为什么要用多态呢?

原因:我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。

多态有什么好处?

有两个好处:

1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承 2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,

多态在什么地方用?

可以用在方法的参数中和方法的返回类型中。

在方法中的参数,请看下面的例子:

public abstract class Driver

{

public void run();//让子类来运行

}

class SBenz : Driver

{

public void run()

{

Console.WriteLine("Benz在以200迈的速度在run");

}

}

class JD : Driver

{

public void run()

{

Console.WriteLine("JD is running...");

}

}

class Person

{

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;

}

}

static void Main(string[] args)

{

Person p = new Person();

JD jd = new JD();//刚开始没钱就买辆JD吧

p.setDriver(jd);

p.drive();

SBenz benz = new SBenz();//有钱换车了

p.setDriver(benz);

p.drive();

}

在方法的返回类型中,请看下面的例子:

上面的例子中,不管是JD还是Benz都是我们自己直接new出来的.我们可以设计一个工厂类,专门生成汽车

/*** 我们将多态使用在方法的返回类型中* Driver可以是抽象类,也可以是接口,JD和Benz分别继承该类或实现该借口

*/

public class CarFactory

{

public Driver factory(String carName)

{

if (carName.Equals("JD"))

{

return new JD();

}

else if (carName.Equals("Benz"))

{

return new SBenz();

}

else

{

Console.WriteLine("对比起,不伺候");

return null;

}

}

}

这实际上就是设计模式中的简单工厂模式!

类型的参数.,传入参数的时候,可以传入任何一个类的对象,只要是对应的类的对象名称就可以了这就是多态的应用!

你可能也喜欢

浦东新区月度热销酒店推荐
365系统维护

浦东新区月度热销酒店推荐

📅 06-28 👀 1043
全自动智能铅笔
det365娱乐官网登录

全自动智能铅笔

📅 07-09 👀 603
如何判断图片是否为网图
det365娱乐官网登录

如何判断图片是否为网图

📅 07-20 👀 7501
08版现状真诚建议
det365娱乐官网登录

08版现状真诚建议

📅 06-30 👀 8134
北京哪里的ktv带少爷和公主(北京那个ktv有公主)
det365娱乐官网登录

北京哪里的ktv带少爷和公主(北京那个ktv有公主)

📅 07-18 👀 9141
光鲜亮丽是什么意思
365系统维护

光鲜亮丽是什么意思

📅 07-01 👀 8565