多态对于基础不太好的同学不太好理解,下面谈谈我对它的认识。它和继承是相对的,继承是子类调用父类,多态则是父类使用子类。在继承中子类可以使用父类中公有的方法和属性等,而在多态中,简单的说,建立一个父类的对象,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个对象调用这个函数的时候,定义这个对象的类(也就是父类)里的同名函数将被调用,当在父类里的这个函数前加virtual关键字或父类为一个接口,那么子类的同名函数将被调用。
下边是一段C#代码来解释多态
class Test
{
staticvoid Main(string[]args)
{
Testtt = new Test();
tt.PlayVideo();
}
public voidPlayVideo()
{
videoShowvw;
vw=newDVD() ;
Console.WriteLine(vw.PlayVideo());
vw = newVCD();
Console.WriteLine(vw.PlayVideo());
}
}
public abstractclass videoShow
{
publicabstract stringPlayVideo();
}
public class VCD : videoShow
{
publicoverride stringPlayVideo()
{
return"正在播放VCD";
}
}
public class DVD : videoShow
{
publicoverride stringPlayVideo()
{
return"正在播放DVD";
}
}
在上面的代码中我们使用父类videoShow实例化了一个对象vw,在下面我们使用父类的对象调用了子类中的方法PlayVideo。
由多态我们还引出了向上转型和向下转型的概念:
向下转型:父类不一定能转成子类类型
向上转型:子类一定能转成父类类型
举一个形象的例子就是:
多态: java程序员包括j2se的,J2ee的,j2me的。
向上转型: j2ee的 转成 java程序员
向下转型: java程序员 转成 j2ee的