黑马程序员技术交流社区

标题: 继承中,父类和子类有同名静态变量的问题 [打印本页]

作者: kongling    时间: 2013-12-4 18:10
标题: 继承中,父类和子类有同名静态变量的问题
本帖最后由 kongling 于 2013-12-5 17:53 编辑

下面的程序输出什么?为什么?
  1. public class Test
  2. {

  3.         public static void main(String[] args)
  4.         {
  5.                 Father father=new Father();
  6.                 Child child=new Child();
  7.                
  8.                 System.out.println(father.a);
  9.                 System.out.println(child.a);
  10.                 System.out.println(((Father)child).a);

  11.         }

  12. }
  13. class Father
  14. {
  15.         public static String a="father";
  16. }
  17. class Child extends Father
  18. {
  19.         public static String a="child";
  20. }
复制代码

作者: sd110572    时间: 2013-12-4 22:58
第一个和第二个打印父的和子的。
最后一个强转成父类型,所以打印父的。
静态变量调用只看调用者是什么类型,调用自己类型的静态变量。
作者: 汪洋大海    时间: 2013-12-4 23:13
同学,你这个问题提的好呀。。代码可以运行。。
我以前只知道静态可以用类名调用。。
不过我想问一下你,这样做有什么用途?
谢谢你了哟。
作者: kongling    时间: 2013-12-5 17:52
这个问题是我前一阵笔试的时候碰到的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2