刚刚看了一篇关于内部类的文章,见到内部类的使用,产生了很多的问题,当然解决这些问题是有助于提高水平,但我两年前看书的时候,就不明白为什么要用内部类,直到现在用JAVA搞了几个项目,还是不明白有什么实际用途,哪位高手能给个例子出来说明它的实际意义?谢谢。
解决方案 »
- ArrayList根据索引怎么移除对象?
- 求解启动服务器端和客户端的代码后发送的信息(英文或中文)都乱码
- 请问想学 设计模式 该看什么书比较好?
- 请教 乱码问题的解决方法~~~~~ 在线等............................
- synchronized问题?
- JBuilder连接SQL Server 2000问题?
- 怎么用java实现文件(图片)下载???
- JDK的最新版本是多少了?哪里能下载到??
- 怎样可以使java的jDialog的右上角的“关闭”置灰
- 启动时报bean没找到错,项目右键maven“Update Project”后就好了是为什么?
- 菜鸟提问啦(各位好人快来帮忙啊)
- 小弟,初学JAVA,各位大侠能否传个JAVA帮助文档
private static class AA extends X{
}
}
举个例子,比如Iterator的实现。Iterator是个接口,不同的集合对此有不同的实现,而实现这个接口往往要访问对象数据的内部成员。如果不实现为内部类,很难同时保证可访问性与安全性。同时因为这个类是内部定义的,定义对外部是不可见的,所以iterator方法返回的时候只能返回Iterator类型,能够确保不泄漏内部实现,这是一种很好的编程风格。
void a(){}
}interface I{void a()}
class B extends A{}此时想在B中实现接口I,但是又不想覆盖方法a()
可以使用内部类实现接口I
class B extends A{
void b(){}
private class Inner implements I{
void a(){b();}
}
public I getI(){return new Inner();}
}
可以这样调用
public class C{
void cc(I i){}
public static void main(String[] args){
B b = new B();
C c = new C();
c.cc(b.getI());
}
}
我照你的方式做,可是報錯如下:
Error(15,10): method a() in class testtmp.B.Inner cannot implement method a() in interface testtmp.I with weaker access privileges, was public
void b(){}
private class Inner implements I{
public void a(){b();} //===========> 这个方法缺少一个public关键字,因为所有接口的方法都是public的,不能缩小其作用范围
}
public I getI(){return new Inner();}
}