.NET 學習

.NET 學習生活感想... 万事成蹉跎..... 贵在坚持 及时整理自己做过和学过的东西

博客园 首页 新随笔 联系 订阅 管理

interface & abstract class 不能包含static 方法!
abstract class A {
static void doSomething() ;
}
不能通过编译是因你没有定doSomething 的方法体,比如该语句最后你加上{},就可以了用了.这时doSomething A的一个方法.
如果你想把它定义为一个抽象方法那你必它的候使用关键abstract.如果你想定一个方法同使用关键abstract static 不到的.你想想,static 方法是方法,它是不允覆写(override)的(所以必在定实现),而abstract方法,是只有特征,没有实现的方法,是必由子来覆写的,两者是水火不相容的,sun当然不会允一个同时为abstract static 的方法。

至于接口和抽象类还有点不同,因它是粹的设计,不及任何的实现,它所有的方法都是共有和抽象的(关键publicabstract可以省略)所以接口不能有static方法(方法),上面提到的static void doSomething(){};在抽象中可以存在,但是在接口中是不允的。

便提以下,在接口中可以定staic的属性的。实际上接口中定的属性必static,finalpublic的(因是必的,所以3关键字也都是可以省略的)

一:static不能和abstract
二:interface是更抽象的抽象,接口的所有方法都未实现,接口的方法默认为public abstract ,根据原一,当然不能是static了;
三:抽象是部分实现的,其中nonabstract方法可以staticabstract方法不能static
posted on 2008-07-30 14:50  Tonyyang  阅读(703)  评论(0编辑  收藏  举报
欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/