接口和事件机制的总结
public abstract class Student { private String name; //定义构造方法 public Student(String name) { this.name = name; } //定义一般方法 public String getName() { return name; } public void setName(String name) { this.name = name; } //定义抽象方法 public abstract void study();//定义了一个学习的抽象方法study() public abstract void exam();//定义了一个考试的抽象方法exam()} //定义一个一般的类UNStudent继承抽象类Studentpublic class UNStudent extends Student{ public UNStudent(String name) { super(name); } //实现抽象类中所有的抽象方法 @Override public void exam() { setName("张三"); System.out.println(getName()+"在考试。"); } public void study(){ setName("张三"); System.out.println(getName()+"在学习。"); } } //定义一个抽象类ComStudent继承抽象类Studentpublic abstract class ComStudent extends Student{ public ComStudent(String name) { super(name); } //可以选择性的去实现抽象类中的抽象方法 public void study(){ setName("张三"); System.out.println(getName()+"在学习。"); }}
//定义一个父类Sport:运动类public class Sport { //定义普通方法jump(),run() public void jump(){ System.out.println("动作:跳跃"); }} //定义了一个接口Dance()public interface Dance { //定义抽象方法gyrate():旋转 public void gyrate();} //定义一个接口Music(音乐)public interface Music { //定义一个抽象方法play() public void play();} //定义一个子类Eurythmics(艺术体操类)继承父类Sport,并实现了两个接口Dance,Music,当继承和实现接口同时存在时,要先继承,再实现接口public class Eurythmics extends Sport implements Dance,Music{ //实现Dance接口中的抽象方法 public void gyrate() { System.out.println("舞蹈动作:旋转"); } //实现Music接口中的抽象方法 public void play() { System.out.println("配乐:天空之城"); } } //定义一个比赛类Matchpublic class Match { public static void main(String[] args) { Eurythmics e=new Eurythmics();//实例化一个艺术体操对象 e.gyrate();//子类实现了Dance接口,子类的对象调用Dance接口中的gyrate()方法 e.play();//子类实现了Music接口,子类的对象调用Music接口中的play()方法 e.jump();//子类继承了父类中的jump()方法,子类的对象调用了jump()方法 System.out.println(); dancePart(e);//e被看作一个Dance对象,相当于e自动转型,作为参数传入dancePart() musicPart(e);//e被看作一个Music对象,相当于e自动转型,作为参数传入musicPart() sportPart(e);//e被看作一个Sport对象,相当于e自动转型,作为参数传入sportPart() } //定义舞蹈部分的方法 public static void dancePart(Dance dance){ dance.gyrate(); } //定义音乐部分的方法 public static void musicPart(Music music){ music.play(); } //定义运动部分的方法 public static void sportPart(Sport sport){ sport.jump(); }}
JButton jb=new JButton("登 录"); jp2.add(jb);//jcb为下拉框对象,jpf为密码输入框对象,jf为登录窗口对象 LoginListener ll=new LoginListener(jcb,jpf,jf); jb.addActionListener(ll);
//定义LoginListener类实现了事件接口ActionListenerpublic class LoginListener implements ActionListener {private JComboBox jcb;private JPasswordField jpf;private JFrame jf1;//定义构造方法,便于在实例化事件处理类对象时,将qq界面上将下拉框、密码输入框、登录窗口的对象的地址传过来,进行事件处理public LoginListener(JComboBox jcb,JPasswordField jpf,JFrame jf1){this.jcb=jcb;this.jpf=jpf;this.jf1=jf1;}/** * 事件处理方法 */public void actionPerformed(ActionEvent arg0) {String jcbStr=(String)jcb.getSelectedItem();//获取下拉列表中选中项,并把其转成String类型String jpfStr=new String(jpf.getPassword());//当账号和密码匹配时,出现新的QQ界面(窗口),同时登录窗口关闭if(jcbStr.equals("12345678")&&jpfStr.equals("123")){JFrame jf=new JFrame("QQ2013");jf.setSize(260,600);jf.setResizable(true);jf.setLocationRelativeTo(null);jf.setDefaultCloseOperation(3);jf.setVisible(true);jf1.setVisible(false);//将登录窗口隐藏起来}else{//当账号和密码不匹配时,弹出提示信息JOptionPane.showMessageDialog(null, "请输入正确的账号和密码!");}}}
?