黑马程序员之多态中成员变量与成员函数的异同
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();//输出结果:子类
}
}
输出结果为什么会一个按父类输出,一个按子类输出?看完下面的解释就会明白了。^^
引用型变量:
一,非静态成员变量的特点
①,编译时期特点
|--引用型变量所在的类中(即父类),没定义这个变量编译失败(父类中没有这个变量,不管子类有没有都会编译失败,因为你这时候是相当于父,父不能用子的属性)
|--引用型变量所在的类中,定义了这个变量编译成功
②,运行时期特点
|--运行时期,参考引用型变量所属的类中的结果
二,非静态成员方法的特点
①,编译时期特点
|--编译时期,参考引用型变量所在的类中,有没有定义这个方法,有编译成功,没有编译失败(父类必须有这个类)
②,运行时期特点
|--运行时期,虚拟机动态的绑定到了子类对象中,运行的是子类中重写的方法
三,静态成员变量特点
①,编译时期特点
|--参考引用型变量所在的类中,是否定义了静态变量,定义了编译成功,没定义编译失败
②,运行时期特点
|--参考引用型变量所在类中的结果
四,静态成员方法特点
①,编译时期特点
|--参考引用型变量所在类中,是否定义了这个静态方法,没有定义编译失败,定义了就编译成功
②,运行时期特点
|--参考引用型变量所在类中的静态方法
总结:
成员变量
|--不论是静态成员变量还是非静态成员变量
编译时期参考等号左边
运行时期参考等号左边
成员方法
|--静态成员方法
编译时期参考等号左边
运行时期参考等号左边
|--非静态成员方法
编译时期参考等号左边
运行时期参考等号右边虚拟机将动态绑定到子类对象中
说明:
publicstaticvoidmain(String[]args)
{
Fuf=newZi();
System.out.println(f.num);//非静态成员变量运行时期,输出结果参考引用型变量所属的类中的结果,即要参考Fu类中的值"3"
f.print();//非静态成员方法运行时期,虚拟机动态的绑定到了子类对象中,运行的是子类中重写的方法,即要参考Zi类中的方法,所以输出"子类"
}
android培训、
先举个小例子引出问题吧:
//多态例子:
//父类
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类中的方法,所以输出"子类"
}
相关文章推荐
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
- java之多态调用成员变量,成员函数,静态函数的特点
- 用例子来理解c++的类,构造函数,类的多态,成员函数,成员变量
- 黑马程序员_10_成员变量_成员方法_静态成员方法_在多态情况下的特点
- 黑马程序员-博客 (3) 面向对象一之类和对象、成员变量和局部变量、继承、封装、多态
- 多态在成员变量,成员函数以及静态函数中的用法区别
- 黑马程序员—声明类Person,包含2个成员变量:name、age。定义函数sayHello(), * 调用时输出:我叫***,今年***岁了。声明类Chinese继承Person。
- 多态时的------成员变量----成员函数----静态方法--binbinyang
- Java面向对象 多态动态绑定(非静态成员函数、成员变量、静态成员函数)
- java面向对象-多态中成员函数成员变量的特点
- 黑马程序员——声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person
- 多态中成员函数以及成员变量的特点总结:
- java之多态调用成员变量,成员函数,静态函数的特点
- 继承、多态——成员变量、成员函数、构造函数(this、super)
- 多态-成员变量-成员函数-静态函数 之间的注意点与区别
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
- 多态的好处和弊端案例(成员变量,成员函数,静态成员函数,接口)会用到instance
- 继承、多态——成员变量、成员函数、构造函数(this、super)
- JAVA中继承时成员变量和成员函数的区别
- static 成员变量以及static成员函数