Java的内层类和外层类,第1张

Java的内层类和外层类,第2张

什么是内班?
内部类是定义在另一个类内部的类,定义这个类的类称为外部类。内部类的优势在于它可以访问外部类中定义的所有变量和方法。这就是为什么内部类非常适合创建适配器;内部类的另一个好处是用户可以看到自己实例化了一个接口实例,下面的代码(这是按钮点击事件的代码):
/外部类是" frame 1 "
button 1 . addactionlistener(new Java . awt . event . action listener(){
public void action performed(action event e){
button 1 _ action performed(e);//button1_actionPerformed(e)方法在Fr
ame1
}
})中定义;
其中:
Java . awt . event . action listener(){
public void action performed(action performed){
button 1 _ action performed(e);
}
}
这是定义的内部类!其实ActionListener是一个接口,下面{}中的内容就是这个内部类的一个方法:public void action performed(action event e);这个内部类有任何属性。这个方法中的动作是调用按钮click方法-button 1 _ action performed
(e)
-这个方法是在外部类Frame1中定义的:我们的处理在这个方法中。比如我们可以写:
void button 1 _ action performed。
}
这里我们看到内部类在调用外部类的方法——button 1 _ action performed(e(e)。同时我们注意到内部类定义前面的“new”,她实例化了这个内部类!
匿名类和命名类在上面的代码中,定义的内部类没有类名。这是因为这个类只使用过一次,而且是“一次性”类,也就是匿名类。不用担心这个类的名字,Java会在幕后为我们做这件事。编译后,您可以在项目目录中找到这些类。它们有这样的名字:frame 1$1 . class,1$2 . class等等。
我们也可以使用这种技术比如:
button new button = new button(){
public void some new method(){
/*这里定义额外的方法*/
}。
在这里,newButton对象是普通的java.awt.Button,为它定义了一个额外的方法。
当您想在一个内部类中创建多个对象时,请使用命名类而不是匿名类。实际上,命名类和匿名类在本质上没有什么不同。代码如下:
公共框架1扩展修饰框架{
...
public frame1 () {
...
try {
jbinit();
}
catch(Exception e){
e . printstacktrace();
}
}//frame 1结构的结尾
private void jbInit()抛出异常{
...
button 1 . addactionlistener(new button 1 adapter());
...
}//jbInit()方法的结尾
类Button1Adapter实现Java . awt . event . action listener {
public void action performed(action event e){
button 1 . action performed(e);
}
}
void button 1 _ action performed(action event E){
/* your own Statements */
}
这里提供了一个名为Button1Adapter的类的普通定义。该类实现ActionListener接口。
new创建适配器的一个实例,您可以一起注册其他button1对象。内部类会有这样一个文件名:frame 1 $ button 1 adapter . class .
上面的代码没有内部类也可以实现。但是标准的方法是使用内部类。如果你有兴趣,你也可以尝试在没有内部类的情况下实现上面的代码...:-)

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Java的内层类和外层类

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情