还有一个问题就是:抽象类里面的方法可以用static修饰??
我不太确定:我笔试填的是 不能,可以。请问这样对不对?我知道接口里面的方法是不能用static修饰的。求解释

解决方案 »

  1.   

    static 静态类方法是在程序加载的时候就在内存中声明完成了,即有实现了接口 :是没有实现的方法,等待具体实现  所以不能用static
    而抽象类的实现也是在子类中实现的 所以不能
      

  2.   


        public abstract class AA
        {
            static void AA_Function()
            {
                Console.WriteLine("keyi");
            }
        }
      

  3.   

    记好了   抽象类里面的抽象方法不能static 其他都可以  
    从定义上可以看出 
    abstract 就是为了让其他继承 
    static 属于类的 不是对象的继承没有意义 
    abstract关键字和static关键字不能一起使用(在同一个方法或者同一个类上)但是抽象类里可以声明静态方法 
    类可以被继承 因为可以 多态 (父类 = new 子类) 所以静态方法跟随父类到子类 (这个最好不要叫继承) 因为子类这个静态方法是属于父类的 举例class A 
    {
    public static int i = 0;
    }class B:A{}执行 B。i=2;输出A.i  为2静态的出现本就是伪面向对象的 是过程化的  但是因为其全部加载 和 使用方便  所以才留在对象型语言里的
    这点要切记 
    学这些东西 概念要理清楚点 这种变态的题 及时没有运行过也会很清楚是什么结果
      

  4.   

    按照你的例子,执行B,但是我把B强制声明为A类型,结果输出i应该是输出0?
      

  5.   

    貌似你错了哦
    namespace ConsoleApplication1
    { abstract class A
        {
         public static int i=0;
          
       }    class B:A
        {
            int i=2;
        }
        class progrome{
            static void Main(string[] args)
            {
                B BB =new B();
                Console.WriteLine(A.i);
                Console.Read();
            }
        }
     }
    输出的结果为0.
      

  6.   


      int i=2;
    这句话 你声明成一个静态属性试一试 编译都不会过好吧
      

  7.   

    那你说执行 B。i=2;输出A.i 为2
    我11楼的代码不是按照你9楼的描述写的吗?无论怎么写,输出A.i就是输出0啊
      

  8.   

    你应该输出B.i 试一下 
    你的 int i=2; 跟   public static int i=0; 有什么关系么?
    对象里面的字段和类的静态属性有关系么? 
    先看看概念理解理解在跑代码尝试下好么?
      

  9.   

    改为    class B:A
        {
            public static int i =2 ;
           
              
        }编译器照常通过
      

  10.   

    你执行了B。i=2;么  在哪里? 
    B是类  不是对象 看好了昂
      

  11.   

    奥 可以编译  我在12 楼说错了  B会覆盖A里面的i属性
      

  12.   


        public abstract class A
        {
            public static int i = 0;
        }    public class B : A
        {
            public static int i = 0;
        }
      

  13.   

    sorry,看错了,抽象方法的确不能用static修饰
      

  14.   

    不能
    原因:抽象abstract 和 static静态,其实一看他们的作用和属性就很容易辨别,abstract是没有实现的,
    而static一定要有实现,因为abstract的类不能生产对象,但是static是属于类,而类已经是一个存在的对象,这两个关键字在这上面有一个关键的矛盾点。