interface & abstract class & static 方法

原创 2007年10月04日 21:46:00

问题 

高手请教 interface & abstract class 为什么不能包含static 方法!

sun这么做的动机是什么?
好像大名鼎鼎的 thinking in java中也没有解释!!

回答:

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

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

顺便提以下,在接口中可以定义staic的属性的。实际上接口中定义的属性必须是static,final和public的(因为是必须的,所以这3个关键字也都是可以省略的)

原则一:static永远不能和abstract碰头;
原则二:interface是更抽象的抽象类,接口的所有方法都未实现,接口的方法默认为public abstract ,根据原则一,当然不能是static了;
原则三:抽象类是部分实现的,其中non-abstract方法可以带static,abstract方法不能带static;

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《那些年啊,那些事——一个程序员的奋斗史》——05

段伏枥要面试的是家小公司,主要是做手机游戏的。只不过他可能完全没有想到,他居然会给公司带来如此大的轰动,当然并不是因为他的技术。        公司占地不大,有一面是完全的玻璃,座位都是用格子隔开,这...

《那些年啊,那些事——一个程序员的奋斗史》——09

调试程序,断点调试需要吗?不需要吗?需要吗?只不过对于段伏枥来说,不是需不需要的问题,而是他根本就不懂这玩意。虽然在大学里也写过一些程序,但这些大都是从书上依样照搬,并且就只需要看看最后的输出结果而已...

Network Emulator for Windows Toolkit 使用心得(一)

背景:公司测试通讯软件,局域网环境太优秀了,没办法,只好模拟复杂网络环境了。 软件介绍:Network Emulator for Windows Toolkit 听说是从visiostudio中提取...

《那些年啊,那些事——一个程序员的奋斗史》——12

开始录音机程序...

《那些年啊,那些事——一个程序员的奋斗史》——16

目不识丁...

《那些年啊,那些事——一个程序员的奋斗史》——01

段伏枥,一个瘦小,矮小,根本和“帅”这个字粘不上任何关系的普通人。名字的来源在于其多读了几年书的老爹,总抱着有一天要出书出名乃至于名流千古的美好理想,但可惜现实总是给予他无情的而又现实的打击,于是就将...

《那些年啊,那些事——一个程序员的奋斗史》——17

色色的龙少

web性能测试需求分析(一)

这里仅仅做记录,用于细化测试方法。 web性能测试不光是准备测试脚本、测试场景以及环境准备,在前期也需要很多工作。需要我们在沟通交流中投入很多精力。比如项目确认、需求确认、开发人员沟通、设计...

《那些年啊,那些事——一个程序员的奋斗史》——04

很多人来深圳找工作的第一站是位于笋岗仓库的深圳市人才大市场,自然段伏枥也不例外。虽然段伏枥毕业于一个不入流的大学,但信心却空前地高涨。虽然这信心看起来有点过分,但段伏枥却不这么认为,他觉得自己确实是个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)