`
rbible
  • 浏览: 50347 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个细节

阅读更多
今天做一面试题,题意中代码如下:
package test;

class Cat {
    private static String color="donot know";
    public void showColor(){
       System.out.println("cat:  "+color);
      }
    public static void showStaColor(){
       System.out.println("cat:  "+color);
      }
}

class WhriteCat extends Cat{
    private static String color1="whrite";
    public void showColor(){
       System.out.println("whitecat:  "+color1);
      }
    public static void showStaColor(){
       System.out.println("whitecat:  "+color1);
      }

}

public class Test {
	public static void main(String[] args) {
		Cat wc=(Cat)(new WhriteCat());
		wc.showColor();
		wc.showStaColor();		
	}
}


请写出以上代码的结果:

知道的可回一下。
分享到:
评论
6 楼 jj_sof 2008-08-21  
应该是考 先静态 然后 非静态那个~~ 忘记了
5 楼 igogo007 2008-08-20  
whitecat: whrite
cat: donot know



public static void main(java.lang.String[]);
  Code:
   Stack=2, Locals=2, Args_size=1
   0:   new     #2; //class WhriteCat
   3:   dup
   4:   invokespecial   #3; //Method WhriteCat."<init>":()V
   7:   astore_1
   8:   aload_1
   9:   invokevirtual   #4; //Method Cat.showColor:()V
   12:  aload_1
   13:  pop
   14:  invokestatic    #5; //Method Cat.showStaColor:()V
   17:  return
4 楼 zhongw 2008-08-20  
这样的话,把
Cat wc=(Cat)(new WhriteCat());  改成: Cat wc=new WhriteCat();

结果是一样的了。那何必要类型转换啊?
3 楼 rbible 2008-08-19  
这个应用还是很基础的

类的多态和类的静态成员

非静态方法的取决于对象

静态的方法取决于引用类,与对象无关
2 楼 billy1977 2008-01-30  
想想没有那么简单,我测试了一下,其实是:
whitecat:  whrite
cat:  donot know
想了一下想明白了,静态函数与类关联,与对象无关。
1 楼 billy1977 2008-01-30  
whitecat:whrite
whitecat:whrite

相关推荐

Global site tag (gtag.js) - Google Analytics