多态:
好处:提高了程序的扩展性。
思想:通过面向对象的思想,可以指挥对象做事情,如果对象多了,指挥每一个对象,就变得很麻烦。
如何将麻烦的事情简单化呢?对这些对象进行分析并向上抽取,出现了共性类型后,就可以指挥共性类型做事情。
那么,只要是这种共性类型的子类,就可以被指挥。
在程序上的体现:
父类或者接口引用指向了自己的子类对象。
父类或者接口引用接收自己的子类对象。
应用条件:
1,类与类之间必须要有关系。
2,通常会出现覆盖操作。
局限性:通过多态可以提供扩展,可以在前期预先调用后期的内容,
但是不可以调用后期的特有方法。只能调用后期覆盖的方法。
动物 x = new 猫();
x.抓老鼠();//错误,编译失败。因为动物中并未定义该方法。
猫对象在向上转型,成为动物。如果要使用猫特有行为的时候,必须要向下转型。
猫 y = (猫)x;
在这两句代码中,自始自终都是子类对象在做着类型的转变。
成员函数在多态中的特点:
1,编译时期,参考的是引用型变量所属的类中是否有所调用的方法。
2,运行时期,参考是的对象所属的类中是否有调用的方法。
通过主板的示例来了解多态以及接口的应用。
为了主板增强后期的扩展性以及可维护性,定义了一些规则。主板只要使用该规则即可,而其他的板卡只要符合该规则即可。
interface PCI
{
void open();
void close();
}
class MainBoard
{
void usePCI(PCI p)
{
p.open();
p.close();
}
void run()
{}
}
main()
{
MainBoard mb = new MainBoard();
mb.run();
mb.usePCI(new NetCard());
}
两年后:想上网.
class NetCard implements PCI
{
public void open(){}
public void close(){}
}