黑马程序员技术交流社区

标题: 大神快来 [打印本页]

作者: 张东贤    时间: 2013-3-20 21:28
标题: 大神快来
本帖最后由 张东贤 于 2013-3-21 00:33 编辑

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


我就是不知道那样定义我和作用啊,大神们,但是那样做不会报错…郁闷中
作者: 黄玉昆    时间: 2013-3-20 22:29
首先你要明白一点,接口的权限是public的,是对外暴露的,而内部类时定义在内部的,是对外隐藏的,你觉得你这样考虑,是不是有点矛盾呢?那么可想而知,接口中能不能定义抽象内部类了。
作者: 黑马李超    时间: 2013-3-20 22:34
接口中定义的一般都是常量和方法,如果定义抽象内部类,既不能产生对象而类也不能复写,所以定义毫无意义。
作者: Walking Walking    时间: 2013-3-20 22:41
本帖最后由 徐盼盼 于 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. }
复制代码

作者: 黄玉昆    时间: 2013-3-20 22:45
徐盼盼 发表于 2013-3-20 22:41
静态内部类是可以定义在接口内部的。因为使用static修饰一个内部内就相当于一个外部定义的类。 ...

我想问一下,这样做有什么意义呢?
作者: Walking Walking    时间: 2013-3-20 22:53
黄玉昆 发表于 2013-3-20 22:45
我想问一下,这样做有什么意义呢?

首先,语法层次上允许的。至于意义的话,就属于业务层面的了。
作者: 黄玉昆    时间: 2013-3-20 23:04
徐盼盼 发表于 2013-3-20 22:53
首先,语法层次上允许的。至于意义的话,就属于业务层面的了。

期待你的详解啊,先谢谢了
作者: Walking Walking    时间: 2013-3-20 23:09
黄玉昆 发表于 2013-3-20 23:04
期待你的详解啊,先谢谢了

详解不敢当,我也是学了个皮毛。不确定的时候敲敲代码,呵呵:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2