A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张东贤 中级黑马   /  2013-3-20 21:28  /  1105 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张东贤 于 2013-3-21 00:33 编辑

问,接口中可以定义抽象内部类吗,如果能,那有什么用??


我就是不知道那样定义我和作用啊,大神们,但是那样做不会报错…郁闷中

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

7 个回复

倒序浏览
首先你要明白一点,接口的权限是public的,是对外暴露的,而内部类时定义在内部的,是对外隐藏的,你觉得你这样考虑,是不是有点矛盾呢?那么可想而知,接口中能不能定义抽象内部类了。
回复 使用道具 举报
接口中定义的一般都是常量和方法,如果定义抽象内部类,既不能产生对象而类也不能复写,所以定义毫无意义。
回复 使用道具 举报
本帖最后由 徐盼盼 于 2013-3-20 22:54 编辑
黄玉昆 发表于 2013-3-20 22:29
首先你要明白一点,接口的权限是public的,是对外暴露的,而内部类时定义在内部的,是对外隐藏的,你觉得你 ...


静态内部类是可以定义在接口内部的。因为使用static修饰一个内部内就相当于一个外部定义的类。

  1. <BLOCKQUOTE>
  2. interface Demo{

  3. abstract static class Test{
  4.   int a=1;
  5.   abstract void show();
  6.   
  7.   
  8. }
  9. }
  10. class Demo2 extends Demo.Test
  11. {
  12. void show()
  13. {
  14.   System.out.println("Test is ok");
  15. }
  16. public static void main(String []args)
  17. {
  18.   
  19.   new Demo2().show();
  20. }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
徐盼盼 发表于 2013-3-20 22:41
静态内部类是可以定义在接口内部的。因为使用static修饰一个内部内就相当于一个外部定义的类。 ...

我想问一下,这样做有什么意义呢?
回复 使用道具 举报
黄玉昆 发表于 2013-3-20 22:45
我想问一下,这样做有什么意义呢?

首先,语法层次上允许的。至于意义的话,就属于业务层面的了。
回复 使用道具 举报
黄玉昆 黑马帝 2013-3-20 23:04:05
7#
徐盼盼 发表于 2013-3-20 22:53
首先,语法层次上允许的。至于意义的话,就属于业务层面的了。

期待你的详解啊,先谢谢了
回复 使用道具 举报
黄玉昆 发表于 2013-3-20 23:04
期待你的详解啊,先谢谢了

详解不敢当,我也是学了个皮毛。不确定的时候敲敲代码,呵呵:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马