Interface和abstract类不能含有Static方法

原创 2007年10月11日 14:05: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 的方法。

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

便提以下,在接口中可以定staic的属性的。实际上接口中定的属性必static,finalpublic的(因是必的,所以3关键字也都是可以省略的)
一:static不能和abstract
二:interface是更抽象的抽象,接口的所有方法都未实现,接口的方法默认为public abstract ,根据原一,当然不能是static了;
三:抽象是部分实现的,其中nonabstract方法可以staticabstract方法不能static

Java8 允许interface存在static方法

stackoverflow上相关讨论 With Java 8, interfaces can have static methods. They can also have concrete i...
  • zhangch1991425
  • zhangch1991425
  • 2017-06-18 19:57:19
  • 727

Interface in Java 8(Default/Static methods)

在 jdk1.7之前,在 Interface中只能 declare method, 是不可以 define method的。所以在 jdk 1.8 里面有什么不一样呢。 Default method ...
  • stanxl
  • stanxl
  • 2016-12-08 00:11:20
  • 1899

java interface 中的变量为什么只能是 public static final

1. Java 中, interface can not be initialized, 常量值回在 java 编译时期 将该常量放入常量池中, 所以必须要是 final 类型的, 这是jvm加载的机...
  • gyflyx
  • gyflyx
  • 2012-11-12 14:06:32
  • 2971

static和abstract为何不能同时出现

当我们试图使用abstract和static同时修饰一个方法时会发现编译器报错,原因在哪里呢?       因为static修饰的方法是静态方法,其可以直接被类所调用。而abstract修饰的方法为...
  • bingdiana219
  • bingdiana219
  • 2015-09-02 11:34:04
  • 1429

final、static和abstract区别和使用

static 和final以及abstract的使用及区别
  • high2011
  • high2011
  • 2015-09-24 17:03:59
  • 3637

java中抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰

java中抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰...
  • u010575093
  • u010575093
  • 2016-02-24 20:37:39
  • 6015

static class 和 static interface

今天看代码,不断看到static class 和 static interface,也不明白是什么意思。经过多方搜索,总算让我找到了答案。 先看下面一个例子吧: public cl...
  • opzoonzhuzhengke
  • opzoonzhuzhengke
  • 2014-02-24 11:25:03
  • 554

详解C#接口以及实现/C# 接口中不能定义字段

C#接口是什么呢?C#接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。C#接口可以从多个基接口继承,而类...
  • zzy7075
  • zzy7075
  • 2015-03-09 09:59:57
  • 9215

java中的static、final、abstract和interface

修饰符static: 把对象相关的变成类相关的,它可以修饰属性、方法、代码块和内部类 static修饰属性(类变量):    那么这个属性就可以用" 类名.属性名 "来访问,也就是使这个属性成为本...
  • nai598455803
  • nai598455803
  • 2014-03-19 15:59:56
  • 1124

接口中的方法不能声明为static

1如果可以定义抽象静态方法static,设 static abstract method(); 是抽象类A的方法 那么因为是静态方法那可以用A.method(); 而这个方法又是抽象的没有方法体,掉...
  • zfc0826
  • zfc0826
  • 2014-04-10 09:57:01
  • 3518
收藏助手
不良信息举报
您举报文章:Interface和abstract类不能含有Static方法
举报原因:
原因补充:

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