对子类赋给父类的思考

2014-12-03

13:57:48

 1 /** 
 2  * @author nlee
 3  * @version 1:09:38 PM Dec 3, 2014
 4  */
 5 package test;
 6 
 7 public class T extends T1
 8 {
 9     int b;
10 
11     public T(int s1)
12     {
13         super(s1);
14         b = 111;
15     }
16 
17     public void fun2()
18     {
19         System.out.println("T===fun2");
20     }
21 
22     public static void main(String[] args)
23     {
24         T t = new T(5);
25         t.fun1();
26         t.fun2();
27         System.out.println(t.b);
28         System.out.println(t.a);
29         T1 t1 = t;
30         t1.fun1();
31         t1.fun2();
32         System.out.println(t1.a);
33         // System.out.println(t1.b);
34     }
35 }
36 
37 class T1
38 {
39     int a;
40 
41     public T1(int s)
42     {
43         a = s;
44     }
45 
46     public int get()
47     {
48         return a;
49     }
50 
51     public void set(int d)
52     {
53         a = d;
54     }
55 
56     public void fun1()
57     {
58         System.out.println("T1---fun1");
59     }
60 
61     public void fun2()
62     {
63         System.out.println("T1---fun2");
64     }
65 }

33行被注释的代码

33         // System.out.println(t1.b);

若执行则会报错。

因为29行代码

29         T1 t1 = t;

将子类对象实例赋给父类对象,t1和t指向是同一内存块,但是t1不能访问子类的字段,因此t1不能访问变量b。

转载于:https://www.cnblogs.com/Coder816/p/4139971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值