黑马程序员技术交流社区
标题:
多态中成员函数的特点是什么?
[打印本页]
作者:
王红霞
时间:
2012-6-15 17:23
标题:
多态中成员函数的特点是什么?
多态中成员函数的特点?具体点吧
作者:
张洁
时间:
2012-6-15 17:57
一大串的估计你看了也晕。
多态首先需要子类继承父类;父类引用指向子类对象;子类对父类某方法有重写。
当多态时。
用毕老师的话,总结就是:
成员变量看左边。
成员函数看右边。
简单的例子:
class Father {
public int age = 40;
publi void play() {
System.out.println("看戏~");
}
}
class Son extends Father {
public int age = 20;
publi void play() {
System.out.println("上网~");
}
}
主函数:
Father f = new Son(); //父类引用指向子类对象
System.out.println(f.age); //成员变量看左边:也就是遵循父类 结果40
f.play(); ////成员函数看右边:也就是遵循子类 结果 “上网”
作者:
王广丛
时间:
2012-6-15 18:20
本帖最后由 王广丛 于 2012-6-15 21:52 编辑
首先看这么一个例子:
class Animal
{ int num=1;
public void method1()
{
System.out.println(1);
}
public void method2()
{
System.out.println(2);
}
}
class Cat extends Animal
{ int num=2;
public void method1()
{
System.out.println(11);
}
public void method3()
{
System.out.println(3);
}
public static void method4()
{
System.out.println(3);
}
}
class Demo
{
public static void main(String[] args)
{
Animal a=new Cat();
System.out.println(f.num);
Cat c=new Cat();
System.out.println(c.num);
a.method1();
a.method2();
a.method3();//编辑不能通过
((Cat)a).method3();//只有强制类型转换后才能编译通过
c.method4();
}
}
运行之后可以得出结论:
在多态中成员函数的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过;否则编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结一下:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考左边。
在多态中,静态成员变量的特点:
无论编译和运行,都参考左边。
作者:
陌花╮有意、
时间:
2012-6-15 18:47
在多态中成员函数的特点:(动态绑定)
在编译时期:参阅引用型变量所属类中是否有调用的方法。如果有,编译通过,如果没有编译失败
在运行时期:参阅对象所属类中是否有调用的方法。
简单总结就是:成员函数在多态调用是,编译看左边,运行看右边
在多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
在多态中,静态成员函数的特点:
无论编译和运行,都参看左边
这就是静态绑定和(非静态)动态绑定的区别
我们能转换的是父类引用指向了自己的子类对象。该引用可以被提升,也可以被强制转换
多态自始至终都是子类对象在做变化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2