J2SE基础系列之-----InnerClass(UP有分) 普通内部类:定义复杂数据类型,但是可以控制外部不能访问。保持类的封装性匿名内部类:使用比较简单,无须显式地定义类对象和extends语句。呵呵,我就知道这个 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 内部类的第一个好处:隐藏你不想让别人知道的操作,也即封装性。 内部类的第二个好处:内部类对象可以访问创建它的外部类对象的内容,甚至包括私有变量!java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能。 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力。 真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。详细请看:http://www.yesky.com/SoftChannel/72342371961929728/20040906/1850659.shtml 《java编程思想》中以这样一句经典的话描述了innerclass:java中没有多重继承,但是innerclass是对实现多重继承的完美解答 写Gui界面http://community.csdn.net/Expert/topic/3881/3881726.xml?temp=.9459803兄弟有空来这里看看您的问题会得到很不错的解决 主要作用,一封装二用是重用性比较小的类中,比如事件listener还有就是要来完成特定需要实现在的接口...... Core Java中写的:.一个内部类的对象能够访问创建他的对象的实现--包括私有字段.对于同一个包中的其它类来说,内部类能够隐藏起来.匿名内部类可以很方便地定义回调.使用内部类可以非常方便地编写事件驱动的程序 是呀,经常在编写事件驱动的程序中用到。Public class OuterClass extends JFrame{.......rivate class NewAction extends AbstractAction {public NewAction(){ { putValue( NAME, "New" ); putValue( SMALL_ICON, new ImageIcon( getClass().getResource( "images/New24.png" ) ) ); putValue( SHORT_DESCRIPTION, "New" ); putValue( LONG_DESCRIPTION, "Your new action" ); putValue( MNEMONIC_KEY, new Integer( 'N' ) ); }//end of NewAction constructor public void actionPerformed( ActionEvent e ) { // 事件处理 } }}以上就是在一个OuterClass定义的内部类NewAction(),这样就可以很容易地在OuterClass内部实现相应的事件模型,比如这个NewAction()可以作为一个工具兰的按扭处理加进OuterClass。 医院装修费用系统设计 写一个petShop 大家看一笔试题 java如何打开文本文件 为什么JAVA运行老出错 求助:JFace对话框关闭事件的监听 java 写一个直线方程函数的困惑? 如何描述方法与方法之间的调用关系 执行后BUTTON,LABEL,TEXTFIELD都不可见,请问各位高手,为什么? 有谁了解网络机器人的JAVA设计,Spider,Bot,Aggregator (菜鸟)JAVA写的程序怎么能像EXE那样直接运行? 关于Set的程序,为什么编译出错?
内部类的第二个好处:内部类对象可以访问创建它的外部类对象的内容,甚至包括私有变量!java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能。 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力。 真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。详细请看:http://www.yesky.com/SoftChannel/72342371961929728/20040906/1850659.shtml
java中没有多重继承,但是innerclass是对实现多重继承的完美解答
兄弟有空来这里看看
您的问题会得到很不错的解决
二用是重用性比较小的类中,比如事件listener还有就是要来完成特定需要实现在的接口......
.一个内部类的对象能够访问创建他的对象的实现--包括私有字段
.对于同一个包中的其它类来说,内部类能够隐藏起来
.匿名内部类可以很方便地定义回调
.使用内部类可以非常方便地编写事件驱动的程序
Public class OuterClass extends JFrame{
.......
rivate class NewAction extends AbstractAction {
public NewAction(){
{
putValue( NAME, "New" );
putValue( SMALL_ICON, new ImageIcon(
getClass().getResource( "images/New24.png" ) ) );
putValue( SHORT_DESCRIPTION, "New" );
putValue( LONG_DESCRIPTION,
"Your new action" );
putValue( MNEMONIC_KEY, new Integer( 'N' ) );
}//end of NewAction constructor public void actionPerformed( ActionEvent e )
{
// 事件处理
}
}
}
以上就是在一个OuterClass定义的内部类NewAction(),这样就可以很容易地在OuterClass内部实现相应的事件模型,比如这个NewAction()可以作为一个工具兰的按扭处理加进OuterClass。