黑马程序员技术交流社区
标题:
多态的问题
[打印本页]
作者:
青春灬漫步
时间:
2014-10-16 20:14
标题:
多态的问题
在多态中,成员变量和静态成员函数的特点是什么?
作者:
1198914316
时间:
2014-10-16 20:53
给你一个地址我们俩学习学习吧。讲的挺好。加油。
http://blog.csdn.net/iu_81/article/details/1557323
作者:
青春灬漫步
时间:
2014-10-16 20:57
那感情好啊。多谢啊
作者:
nerveva2000
时间:
2014-10-17 10:14
在多态中成员函数的特点:
在编译时期,参阅引用型变量所属的类中是否有调用的方法。
如果有,编译通过。
如果没有,编译失败。
在运行时期,参阅对象所属的类中是否有调用的方法。
简单总结就是:
成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考左边。
例子
class Fu
{
int num= 1;
void method1()
{
System.out.println("fu method-1");
}
void method2()
{
System.out.println("fu method-2");
}
static void method4()
{
System.out.println("fu method-4");
}
}
class Zi extends Fu
{
int num = 2;
void method1()
{
System.out.println("Zi method-1");
}
void method3()
{
System.out.println("Zi method-3");
}
static void method4()
{
System.out.println("Zi method-4");
}
}
class Test
{
public static void main(String[] args)
{
Fu f= new Zi();
f.method1(); //结果是Zi的method1,覆盖
f.method2(); //结果是Fu的method2.
//num全局变量
System.out.println(f.num); //结果是Fu的num
Zi z= new Zi();
System.out.println(z.num); //结果是Zi的num
//method4() 是静态函数
f.method4(); //结果是Fu的method4
z.method4(); //结果是Zi的method4
复制代码
作者:
nerveva2000
时间:
2014-10-17 10:15
本帖最后由 nerveva2000 于 2014-10-17 10:19 编辑
简单总结就是:
在多态中,
成员函数的特点
编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考左边。
class Test
{
public static void main(String[] args)
{
//Zi extends Fu
//method1()是成员函数
Fu f= new Zi();
f.method1(); //结果是Zi的method1,覆盖
f.method2(); //结果是Fu的method2.
//num全局变量
System.out.println(f.num); //结果是Fu的num
Zi z= new Zi();
System.out.println(z.num); //结果是Zi的num
//method4() 是静态函数
f.method4(); //结果是Fu的method4
z.method4(); //结果是Zi的method4
}
复制代码
作者:
郭.威
时间:
2014-10-18 03:01
我也不太明白这个
作者:
HM2014nuli
时间:
2014-10-18 06:31
都只看引用类型那个类,它不会走子类
作者:
lypin
时间:
2014-10-18 08:33
楼上有结果了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2