java接口内定义抽象方法

[b]引言:[/b]

写接口的时候,因为给方法改名的时候打了个空格,意外发现IDE提示:


Illegal modifier for the interface method talk; only public & abstract are permitted



那方法前到底什么时候加abstract呢?

[b]正文:[/b]

我们都知道Java接口在定义的时候,不管是名称还是成员方法,都只能用public、abstract修饰。所以,无论我们给接口名、方法带不带public都是公有的——不可选的默认为公有。

abstract见得不多,因此笔者刚瞅到的时候,还是一楞……其实同public一样,也是不可选的默认。

因此如下的两种定义,在JVM识别的时候是没任何区别(除了2可以定义在别的java文件里了 ;-0 )的:
(1)

public abstract interface AdultBehavior{
abstract void teachChildrenToSpeak();
void talk();
public abstract void sayHi();
}

(2)

interface AdultBehavior{
void teachChildrenToSpeak();
void talk();
void sayHi();
}


补充(201109051308)
另外,笔者做了个测试。测试结论是:在任何名称的java文件中定义非public修饰(实际本身已是public)的接口,都将生成一个额外的以此接口名为文件名的class文件。再一次验证了上文观点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值