黑马程序员_面向对象之多态

来源:互联网 发布:云计算的简介 编辑:程序博客网 时间:2024/05/21 12:50

                                          ----------- android培训java培训、java学习型技术博客、期待与您交流! ---------

一.多态的定义:某一类食物的多种存在形态。

例如:动物中的猫。

猫这个对象对应的类型是猫类型: 猫 x =new 猫();

同时猫也是动物中的一种,也可以把猫称为动物。  动物  y=new 猫();

以上猫就是属于猫类型,也属性动物类,这就是多态的体现。

二.多态的好处:提高了程序的扩展性。

三.多态的弊端:前期建立父类的引用,虽然可以接收后期所有该类的子类对象。但是只能使用父类中的功能,不能使用子类中特有功能。因为前期的程序无法知道后期的子类的特有内容的。但是前期的程序可以使用子类覆盖了父类的方法的内容。 

四. 多态的前提:

1.必须要有关系,比如继承、或者实现。

2.通常会有覆盖操作。

五.多态的代码案例


六.多态出现在成员调用上的特点:

1,成员变量:在多态中,子父类成员变量同名。

在编译时期:参考的是引用型变量所属的类中是否有调用的成员。(编译时不产生对象,只检查语法错误)

运行时期:也是参考引用型变量所属的类中是否有调用的成员。

简单一句话:无论编译和运行,成员变量参考的都是引用变量所属的类中的成员变量。

再说的更容易记忆一些:成员变量 --- 编译运行都看 = 左边。

2,成员函数。

编译时期:参考引用型变量所属的类中是否有调用的方法。

运行事情:参考的是对象所属的类中是否有调用的方法。

为什么是这样的呢?因为在子父类中,对于一模一样的成员函数,有一个特性:覆盖。

简单一句:成员函数,编译看引用型变量所属的类,运行看对象所属的类。

更简单:成员函数 --- 编译看 = 左边,运行看 = 右边。

3,静态函数。 

编译时期:参考的是引用型变量所属的类中是否有调用的成员。

运行时期:也是参考引用型变量所属的类中是否有调用的成员。

为什么是这样的呢?因为静态方法,其实不所属于对象,而是所属于该方法所在的类。

调用静态的方法引用是哪个类的引用调用的就是哪个类中的静态方法。

简单说:静态函数 --- 编译运行都看 = 左边。

七.总结:多态是面向对象的三大特征之一,多态的前提必须存在着继承或实现的关系,多态提高了程序的扩展性,但是,也有其弊端,就是不能调用子类特有的方法,如果,想要调用子类特有的方法,则必须向下转型。

                                                             

                       ----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima


0 0
原创粉丝点击