读书人

c#中的接口除了用public修饰外能不能

发布时间: 2012-03-29 12:53:12 作者: rapoo

c#中的接口除了用public修饰外,能不能用static修饰?
还有一个问题就是:抽象类里面的方法可以用static修饰??


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

[解决办法]
static 静态类方法是在程序加载的时候就在内存中声明完成了,即有实现了

接口 :是没有实现的方法,等待具体实现 所以不能用static
而抽象类的实现也是在子类中实现的 所以不能
[解决办法]
不可以。你可以理解为静态方法并不属于类,只是类命名空间下的全局方法。
[解决办法]

探讨

还有一个问题就是:抽象类里面的方法可以用static修饰??


[解决办法]
抽象类和普通类的唯一区别就是不能实例化,其他的完全一样
[解决办法]
C# code
    public abstract class AA    {        static void AA_Function()        {            Console.WriteLine("keyi");        }    }
[解决办法]
探讨
不可以。你可以理解为静态方法并不属于类,只是类命名空间下的全局方法。

[解决办法]
接口不可以,抽象类可以。
[解决办法]
记好了 抽象类里面的抽象方法不能static 其他都可以
从定义上可以看出
abstract 就是为了让其他继承
static 属于类的 不是对象的继承没有意义
abstract关键字和static关键字不能一起使用(在同一个方法或者同一个类上)

但是抽象类里可以声明静态方法
类可以被继承 因为可以 多态 (父类 = new 子类) 所以静态方法跟随父类到子类 (这个最好不要叫继承) 因为子类这个静态方法是属于父类的 举例

class A
{
public static int i = 0;
}

class B:A{

}

执行 B。i=2;

输出A.i 为2

静态的出现本就是伪面向对象的 是过程化的 但是因为其全部加载 和 使用方便 所以才留在对象型语言里的
这点要切记
学这些东西 概念要理清楚点 这种变态的题 及时没有运行过也会很清楚是什么结果
[解决办法]
探讨

引用:

记好了 抽象类里面的抽象方法不能static 其他都可以
从定义上可以看出
abstract 就是为了让其他继承
static 属于类的 不是对象的继承没有意义
abstract关键字和static关键字不能一起使用(在同一个方法或者同一个类上)

但是抽象类里可以声明静态方法
类可以被继承 因为可以 多态 (父类 = ……

[解决办法]
你应该输出B.i 试一下
你的 int i=2; 跟 public static int i=0; 有什么关系么?
对象里面的字段和类的静态属性有关系么?


先看看概念理解理解在跑代码尝试下好么?
[解决办法]
奥 可以编译 我在12 楼说错了 B会覆盖A里面的i属性
[解决办法]
不能
原因:抽象abstract 和 static静态,其实一看他们的作用和属性就很容易辨别,abstract是没有实现的,
而static一定要有实现,因为abstract的类不能生产对象,但是static是属于类,而类已经是一个存在的对象,这两个关键字在这上面有一个关键的矛盾点。

读书人网 >C#

热点推荐