java 内部类的使用_java内部类的使用和实例 | 学步园

内部类

内部类也成为嵌套类(inner class),是JDK1.1区别于JDK1.0最重要的新特性。内部类既可以在语块中单独定义,也可以在语句中匿名定义(匿名类)。

内部类的属性包括以下说明:

1.        类名只能在被定义的范围内使用,而且要区别于外部类;

2.        内部类可以使用外部类的类变量和实例变量,也可以使用外部类的局部变量;

3.        内部类可以声明为abstract类型;

4.        内部类可以是一个接口,而这个接口必须由另一个内部类来实现它;

5.        内部类可以被定义为private和protected,而不能被定义为public类型,被保护的内部类同样可以使用外部类定义的变量;

6.        类可以被static修饰,此时被修饰的类自动转化为顶层类,被定义为顶层类的类不能在使用其他内部类和局部范围中定义的数据和变量;

7.        内部类不能定义static型成员,只有顶层类才能定义static成员,如果内部类需要使用static型成员,这个成员必须在外部类中被定义;

匿名类

将整个类的描述放在一个表达式中,也就是在定义了一个匿名类的同时创建一个对象。

import java.awt.Frame;

import java.awt.Label;

import java.awt.TextField;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionAdapter;

import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

/**

* 内部类和匿名类的使用

* @author lily

data:20130325

*

*/

public class Practice {

private static Frame frame;

private TextField fTextField;

public static void main(String argsString[]){

Practice practice=new Practice();

practice.go();

}

public void go() {

frame=new JFrame("两个监听的例子");

frame.add("North",new Label("单击鼠标"));

fTextField=new TextField(30);

frame.add("South",fTextField);

//定义一个匿名类

frame.addMouseMotionListener(new MouseMotionListener() {

public void mouseMoved(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseDragged(MouseEvent event) {

// TODO Auto-generated method stub

String string="Mouse dragging :x="+event.getX()+"Y="+event.getY();

fTextField.setText(string);

}

});

//定义一个内部类

frame.addMouseListener(new MouseEventHandler());

frame.setSize(300,300);

frame.setVisible(true);

}

//定义另外一个内部类MouseEventHandler

public class MouseEventHandler extends MouseAdapter {

public void mouseEntered(MouseEvent event) {

String string="鼠标进来了!";

fTextField.setText(string);

}

public void mouseExited(MouseEvent event) {

String string="鼠标离开了!";

fTextField.setText(string);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值