java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
样例1:
   class Parent{
      int num = 3;
   }
 
   class Child extends Parent{
      int num = 4;
   }
*/
 
/*
样例2:
class Parent{
 
}
 
class Child extends Parent{
     int num = 4;
}
*/
 
/*
样例3:
class Parent{
     void show(){
         System.out.println("Parent Show!");
      }
   }
 
   class Child extends Parent{
     void show(){
         System.out.println("Child Show!");
      }
   }
*/
 
/*
样例4:
class Parent{
    
   }
 
   class Child extends Parent{
     void show(){
         System.out.println("Child Show!");
      }
   }
*/
 
 
class  Parent{
     static  void  show(){
         System.out.println( "Parent Show!" );
      }
   }
 
   class  Child  extends  Parent{
     static  void  show(){
         System.out.println( "Child Show!" );
      }
   }
 
 
public  class  PC{
    public  static  void  main(String[] args){
         Parent p =  new  Child();
         //样例1:
         //System.out.println(p.num);// 3, 输出的是父类的num;
         
         //样例2:
         //System.out.println(p.num);// 错误: 找不到符号 num
         
         //样例3:
         //p.show();//Child Show!  输出的是子类的方法!
         
         //样例4:
         //p.show();//  错误: 找不到符号   p.show();
         
         //样例5:
         p.show(); // Parent Show!  运行父类的静态方法。
   
}
 
/*
总结:
对象多态时:
1.成员变量:(不涉及覆盖)
编译时: 参考引用变量所属的类中是否有调用的成员变量, 有, 编译通过,没有,编译失败。
运行时: 参考引用变量所属的类中是否有调用的成员变量, 并运行该类所属中的成员变量。
简单的说:编译和运行都参考等号的左边。
2.成员函数(非静态):
编译时:参考引用变量所属的类中是否有调用的成员变量, 有, 编译通过, 没有,编译失败:
运行时:参考的是对象所属的类中是否有调用的函数。
简单的说:编译看左边, 运行看右边。
3.静态函数, 变量:
    编译和运行都是参考左边参数类型!
    其实静态方法不存在多态, 静态方法是属于类的,我们说的是对象的多态!静态方法直接用类名调用就好了,
    没必要创建对象!
    静态的方法只能被静态的方法所覆盖!
 
*/


转载至:http://www.cnblogs.com/hujunzheng/p/3872619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值