在多态中成员函数的特点:
在编译时期,参阅引用型变量所属的类中是否有调用的方法。
如果有,编译通过。
如果没有,编译失败。
在运行时期,参阅对象所属的类中是否有调用的方法。
简单总结就是:
成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,静态成员函数的特点:
无论编译和运行,都参考左边。
例子
- 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
复制代码 |