黑马程序员技术交流社区
标题:
多态调用在代码中的特点
[打印本页]
作者:
linder_qzy
时间:
2015-3-9 16:28
标题:
多态调用在代码中的特点
总结:在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有编译通过,没有则编译失败
在运行时期:参阅对象所属的类中是否有调用的方法。
一句话就是:成员函数在多态调用时,编译看左边运行看右边。
两种特殊情况除外
1.多态中成员变量无论编译还是运行都参考左边(引用型变量所属的类)
2.在多态中,静态成员函数无论编译和运行都看左边(引用型变量所属的类)
class Fu
{
int num = 2;
void method1(){
System.out.println("Fu_method1");
}
void method2(){
System.out.println("Fu_method2");
}
static void method4(){
System.out.println("Fu_method4");
}
}
class Zi extends Fu
{
int num = 3;
void method1(){
System.out.println("Zi_method1");
}
void method3(){
System.out.println("Zi_method3");
}
static void method4(){
System.out.println("Zi_method4");
}
}
class Demo04
{
public static void main(String[] args)
{
/*(动态绑定)
下边编译失败,因为父类中没有method3方法。
总结:在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有编译通过,没有则编译失败
在运行时期:参阅对象所属的类中是否有调用的方法。
一句话就是:成员函数在多态调用时,编译看左边运行看右边
*/
Fu f = new Zi();
f.method1();
f.method2();
//f.method3();//编译失败,因为父类中没有method3方法
//下边是2种特殊情况
//1.多态中成员变量无论编译还是运行都参考左边(引用型变量所属的类)
Fu fu = new Zi();
Zi zi = new Zi();
System.out.println(fu.num);//打印 2
System.out.println(zi.num);//打印 3
//2.在多态中,静态成员函数无论编译和运行都看左边(引用型变量所属的类)
Fu fu_1 = new Zi();
Zi zi_2 = new Zi();
fu_1.method4();//打印 Fu_method4
zi_2.method4();//打印 Zi_method4
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2