您的位置:首页 > 职场人生

黑马程序员之多态中成员变量与成员函数的异同

2013-06-06 09:10 239 查看
-------
android培训、java培训、期待与您交流!---------

先举个小例子引出问题吧:

//多态例子:

//父类

classFu

{

intnum=3;

voidprint(){

System.out.println("父类");

}

}

//子类

classZiextendsFu

{

intnum=4;

voidprint(){

System.out.println("子类");

}

}

classDuoTaiDemo3

{

publicstaticvoidmain(String[]args)

{

Fuf=newZi();

System.out.println(f.num);//输出结果:3

f.print();//输出结果:子类

}

}

输出结果为什么会一个按父类输出,一个按子类输出?看完下面的解释就会明白了。^^

引用型变量:

TVyaokongqi=newTV();其中yaokongqi指的就是引用


一,非静态成员变量的特点

①,编译时期特点
|--引用型变量所在的类中(即父类),没定义这个变量编译失败(父类中没有这个变量,不管子类有没有都会编译失败,因为你这时候是相当于父,父不能用子的属性)
|--引用型变量所在的类中,定义了这个变量编译成功
②,运行时期特点

|--运行时期,参考引用型变量所属的类中的结果

二,非静态成员方法的特点

①,编译时期特点

|--编译时期,参考引用型变量所在的类中,有没有定义这个方法,有编译成功,没有编译失败(父类必须有这个类)

②,运行时期特点

|--运行时期,虚拟机动态的绑定到了子类对象中,运行的是子类中重写的方法

三,静态成员变量特点

①,编译时期特点

|--参考引用型变量所在的类中,是否定义了静态变量,定义了编译成功,没定义编译失败

②,运行时期特点

|--参考引用型变量所在类中的结果

四,静态成员方法特点

①,编译时期特点

|--参考引用型变量所在类中,是否定义了这个静态方法,没有定义编译失败,定义了就编译成功

②,运行时期特点

|--参考引用型变量所在类中的静态方法

总结:

成员变量

|--不论是静态成员变量还是非静态成员变量

编译时期参考等号左边

运行时期参考等号左边

成员方法

|--静态成员方法

编译时期参考等号左边

运行时期参考等号左边

|--非静态成员方法

编译时期参考等号左边

运行时期参考等号右边虚拟机将动态绑定到子类对象中

说明

publicstaticvoidmain(String[]args)

{

Fuf=newZi();

System.out.println(f.num);//非静态成员变量运行时期,输出结果参考引用型变量所属的类中的结果,即要参考Fu类中的值"3"

f.print();//非静态成员方法运行时期,虚拟机动态的绑定到了子类对象中,运行的是子类中重写的方法,即要参考Zi类中的方法,所以输出"子类"

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐