黑马程序员--------内部类和外部类
来源:互联网 发布:淘宝开店怎么收费标准 编辑:程序博客网 时间:2024/04/20 08:44
(一) 内部类(InnerClass)和内部类
类可以有两种重要成员:成员变量和方法,还可以有一种成员:内部类。内部类是在一个类的内部嵌套定义的类,它可以是其它类的成员,也可以在一个语句块的内部定义,还可以在表达式内部匿名定义。
内部类有如下特性:
◇ 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。名字不能与包含它的类名相同。
◇ 可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量。
◇ 可以定义为abstract。
◇ 可以声明为private或protected。
◇ 若被声明为static,就变成了顶层类,不能再使用局部变量。
◇ 若想在inner class中声明任何static成员,则该inner class必须声明为static。。
1. 内部类使用
例3-8 是一个说明内部类如何使用的例子,其中,定义了两个内部类:MouseMotionHandler和MouseEventHandler,分别用来处理鼠标移动事件和鼠标点按事件。
【例3-8】
import java.awt.*;
import java.awt.event.*;
public class TwoListenInner {
private Frame f;
private TextField tf;
public static void main(String args[]) {
TwoListenInner that=new TwoListenInner();
that.go();
}
public void go() {
f=new Frame("Two listeners example");
f.add("North",new Label("Click and drag the mouse"));
tf=new TextField(30);
f.add("South",tf);
f.addMouseMotionListener(new MouseMotionHandler());
f.addMouseListener(new MouseEventHandler());
f.setSize(300,300);
f.setVisible(true);
}
public class MouseMotionHandler extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e){
String s="Mouse dragging:X="+e.getX()+"Y="+e.getY();
tf.setText(s);
}
}
public class MouseEventHandler extends MouseAdapter {
public void mouseEntered(MouseEvent e){
String s="The mouse entered";
tf.setText(s);
}
public void mouseExited(MouseEvent e){
String s="The mouse left the building";
tf.setText(s);
}
}
}
运行这个程序,可以看到它的运行结果。当将鼠标移入frame时,文本框中会出现:"The mouse entered";当在frame中拖曳鼠标时,文本框中会出现:"Mouse dragging:X=64 Y=117";当鼠标离开文本框时,文本框中出现:"The mouse left the building"。
2. 匿名类的使用
匿名类是一种特殊的内部类,它是在一个表达式内部包含一个完整的类定义。通过对上例中go()部分语句的修改,我们可以看到匿名类的使用情况。
public void go() {
f=new Frame("Two listeners example");
f.add("North",new Label("Click and drag the mouse"));
tf=new TextField(30);
f.add("South",tf);
f.addMouseMotionListener(new MouseMotionHandler(){
/*定义了一个匿名类,类名没有显式地给出,只是该类是
MouseMotionHandler类的子类*/
public void mouseDragged(MouseEvent e){
String s="Mouse dragging:X="+e.getX()+"Y="+e.getY();
tf.setText(s);
}
});
f.addMouseListener(new MouseEventHandler());
f.setSize(300,300);
f.setVisible(true);
}
内部类的优缺点:
1.优点:
java中的内部类和接口加在一起,可以实现多继承。
可以使某些编码根简洁。
隐藏你不想让别人知道的操作。
节省编译后产生的字节码文件的大小
2. 缺点:
使程序结构不清楚
- 黑马程序员--------内部类和外部类
- 黑马程序员--外部类和内部类。(-)
- 黑马程序员_内部类与外部类访问说明
- 黑马程序员_总结外部类访问内部类
- 黑马程序员_关于内部类和外部类的调用关系
- 黑马程序员:通过一个小例子了解java内部类和外部类的基础知识
- 内部类和外部类
- 内部类和外部类
- 内部类和外部类
- 内部类和外部类
- 内部类和外部类
- 内部类和外部类
- 黑马程序员--内部类和匿名内部类
- 黑马程序员-day09内部类和匿名内部类
- 黑马程序员 内部类和匿名内部类
- 黑马程序员 Object类,包和匿名内部类
- 黑马程序员 Java中的匿名类和内部类
- 【黑马程序员】有关内部类和封装类的总结
- 判断网络是否连接
- 流媒体Live555学习(二)
- nyoj-20--吝啬的国度-DFS+vector
- ADO数据库编程总结
- hdu 1166 敌兵布阵(线段树-单点更新)
- 黑马程序员--------内部类和外部类
- JarBundler 将可执行 jar 打包成 app
- opencv+vs2010安装
- android 标签页的实现 TabHost TabWidget TabActivity
- 安卓应用开发之—现有应用软件版本下独立新版本
- 多线程笔记
- 【android开发】解决INSTALL_FAILED_MISSING_SHARED_LIBRARY问题.面向菜鸟中的战斗鸟,零基础人士
- hibernate优化
- wordpress中添加Javascript文件与css文件的方法