匿名的内部类问题 匿名的内部类究竟能不能继承其它类,有人说能,有人说不能只能实现接口,我觉得能,可我看了不少资料说不能,不知为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 继承了可以重写父类的方法,别外还可以加些别的方法,好swing中的mvc模式中重写module常用到,不过我看了好多资料都说匿名的内部类不能继承其它类,不知道为什么,还是我的理解不误,我想确定一下 楼主的原话:匿名的内部类究竟能不能继承其它类!!匿名的内部类本身已经继承了其他类或者借口,又谈何究竟能不能继承其他类?如:下面的匿名的内部类已经继承了WindowAdapter(适配器)抽象类 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { System.exit(0); } }); 内部类当然可以继承其他类,而且这是一个很重要的特性,因为他可以使内部实现与外部引用隔离开,最典型的例子是Collection集合与Iterator的关系,如果看到过他们的源代码就可以知道在每个具体的Collection class中都有一个具体的Iterator class实现继承了Iterator接口,并使得Client programmer在外部引用时并不需要知道内部的变化而只认为其为一个Iterator,这就保证了例如LinkedList l = new LinkedList();Iterator itr = l.iterator();HashSet hs = new HashSet();itr = hs.iterator();对于Client programmer来说itr似乎可以在两个Collection中相互转换,但其实他们实现了不同的具体iterator class,而这些具体的iterator class正是封装在具体聚集类中的inner class@.@||~ 应该说,匿名的内部类除了Object,只能有一个直接 父类 或 父接口.一般,匿名的内部类实现接口时,更愿意继承该接口的抽象实现(适配器)抽象类,这样可以少写无关的代码,功能也不会有任何损失.以hujiaboy(撑死你大爷) ( ) 的例子:匿名的内部类已经实现WindowListener接口: addWindowListener(new WindowListener() { public void windowClosing(WindowEvent w) { System.exit(0); } public void windowActivated(WindowEvent e){} public void windowClosed(WindowEvent e){} public void windowDeactivated(WindowEvent e){} public void windowDeiconified(WindowEvent e){} public void windowIconified(WindowEvent e){} public void windowOpened(WindowEvent e){} });同样功能的匿名的内部类继承了WindowAdapter(适配器)抽象类,比实现接口少了无用方法的实现 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent w) { System.exit(0); } }); eclipse比较高端的问题 【测试】写出你知道的用JDK复制文件的所有方法。 提问:手机背单词java StringTokenizer怎么把一个String 解析到一个String数组里 poi能读写大于100m的文件的么 java 怎么调用 vf数据库文件 关于一个字符串的操作问题?在线等! JTextArea的困扰 二进制和字符的相互转换 哪位肯给俺一点分,谢谢 勇闯黄金十二宫--射手宫 菜鸟问题,高手帮忙
楼主的原话:匿名的内部类究竟能不能继承其它类!!匿名的内部类本身已经继承了其他类或者借口,又谈何究竟能不能继承其他类?如:下面的匿名的内部类已经继承了WindowAdapter(适配器)抽象类
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
});
Iterator itr = l.iterator();HashSet hs = new HashSet();
itr = hs.iterator();对于Client programmer来说itr似乎可以在两个Collection中相互转换,但其实他们实现了不同的具体iterator class,而这些具体的iterator class正是封装在具体聚集类中的inner class@.@||~
一般,匿名的内部类实现接口时,更愿意继承该接口的抽象实现(适配器)抽象类,这样可以少写无关的代码,功能也不会有任何损失.以hujiaboy(撑死你大爷) ( ) 的例子:匿名的内部类已经实现WindowListener接口:
addWindowListener(new WindowListener()
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
public void windowActivated(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowOpened(WindowEvent e){}
});
同样功能的匿名的内部类继承了WindowAdapter(适配器)抽象类,比实现接口少了无用方法的实现
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
});