论坛首页 入门讨论版 Java

关于静态与非静态的一点迷惑!

浏览 172 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-04-22
class A
{
   int i=10;
 
   static void show()
   {
       System.out.println("show() in A");
   }

     void show1()
   {
    System.out.println("show1() in A");
   }
}
class B extends A
{
   static int i=20;
  
   static void show()
   {
      System.out.println("show() in B ");
   }

   void show1()
   {
    System.out.println("show1() in B");
   }
}



class TestStatic
{
   public static void main(String[] args)
   {
      A aa=new B(); 
     aa.show();  //1
      aa.show1();  //2
    
    
   
   }
}


我想问的是:1:为什么静态方法只能够覆盖静态方法,非静态只能覆盖非静态方法?而成员变量却可以用静态覆盖非静态,非静态覆盖静态的?
          2:当两个类为is-a的关系的时候,调用静态方法的时候,为什么1处和2处的结果和调用非静态的有所不同?
   
最后更新时间:2008-04-22
静态方法还有做成继承的,还真没见过


我觉得可以这么理解:静态类或变量是跟着所属的类(就是Xxx.class文件)存在的,跟继承不继承的不相干。
   
0 请登录后投票
论坛首页 入门讨论版 Java

跳转论坛:
JavaEye推荐