日期:2014-05-20  浏览次数:20756 次

飘~涅咯~内部类是咋米回事,有虾米优缺点么
地主婆家滴小白问题2.

有的程序里用了好多,转晕晕勒@_@

------解决方案--------------------
内部类,顾名思义就是处在类中的类。内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例作为参数传进构造方法,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内部的类可以使用所有外层的类的实例,方法或者变量,而外层的类不能使用内层的类。从我个人的角度说,接触内部类最多的是在 GUI 设计时,比如:
Java code

JButton btnInput = new JButton();
btnInput.setText("输入");
btnInput.addActionListener(inputButtonAction);

// 这里的 inputButtonAction 就是一个内部类 Action 的实例
Action inputButtonAction = new AbstractAction()
{
    public void actionPerformed(ActionEvent e)
    {
        // 这里内部类可以使用外层类的方法
        someFunction();
    }
};

private void someFunction()
{
    // 可以在这里写点击按钮所执行的操作
}

------解决方案--------------------
就是你改的那些swing程序里实现ActionListener接口后就要实现的actionPerformed方法里的给组件加action listener用到匿名内部类会方便些
public class Frame1 implements ActionListener{
....

public void actionPerformed(ActionEvent e) {

if((e.getSource()==jb1)||(e.getSource()==jb2)){
final JDialog jd1=new JDialog(f,"增加操作员"); 
jd1.setLayout(new BorderLayout());
final OperatorPane operatorPane = new OperatorPane("操作员信息");
jd1.add(operatorPane,BorderLayout.CENTER);
JButton jb1=new JButton("确定");
JButton jb2=new JButton("取消");
jb1.addMouseListener(new MouseAdapter(){//这里就是一个事件加监听的匿名内部类new 出来的MouseAdapter没有名字

@Override
public void mouseClicked(MouseEvent e) {
jd1.setVisible(false);
//super.mouseClicked(e);
//对话框上的数据添加的表格中
Map<String, Object> values = operatorPane.getValues();
int c = model.getColumnCount();
List<Object> row = new ArrayList<Object>();
for(int i=0;i<c;i++){
String name = model.getColumnName(i);
Object value = values.get(name);
row.add(value);
}
model.addRow(row.toArray());
}

});
其他地方我也不懂有什么方便的
------解决方案--------------------
内部类(Inner Class)
分为(1):Atatic inner class静态内部类
(2)Member inner class成员内部类
(3)Local inner class局部内部类
(4)Anonymous inner class匿名内部类
每种内部类,中调外部类的属性和方法,其他类调这个内部类中的属性和方法,都有很多不同的,当然还有很多相同的,
楼主还是自己网上搜一下,我就不总结了,比较繁琐。