`

抽象类、接口、事件机制

 
阅读更多
1.抽象类的格式
public abstract class 抽象类名(){
    public 返回值类型 属性名;
    //普通方法
     public 返回值类型 方法名(参数值类型 参数名,...){
    }
   //抽象方法
     public abstract 返回值类型 方法名(参数值类型 参数名,...);
}


*抽象类可以继承抽象类,也可以继承普通类
*抽象类和普通类都只能继承一个父类
*普通类继承抽象类时必须实现抽象类的抽象方法
*抽象类不能实例化对象


2.接口
接口的格式
public interface 接口名(){
    //定义常量
    public static final 常量类型 常量名=常量值;
     //抽象方法
    public 返回值数据类型 方法名(参数值数据类型 参数,...);
    public abstract 返回值数据类型 方法名(参数值数据类型 参数,...);
}


*接口中默认的访问修饰符石public
*定义常量时的static和final不写时系统会自动添加


接口的实现
public class 类名 impliments 接口名(){
  
}

实现接口的类可以继承其他的类
public class 子类名 extends 父类名 implements 接口名(){

}


*实现接口时要实现接口中的方法
*类实现接口时,两者间是继承关系(可以实现自动转型)


3.事件机制

建立一个事件机制的步骤:
   1>确立事件源(java中所有的图形组件都可以作为事件源,事件发生在哪个组件上,哪个组件就是这个事件的事件源);
   2>确定事件的类型;
   3>实例化一个事件处理类的对象(最终实现事件的对象,要实现相应的接口中的方法);
   4>给事件源添加事件监听器,并绑定一个事件处理类的对象
      常用的添加事件监听器的方法有addActionListener(),addMouseListener(),addMouseMotionListener(),addKeyListener()
     其中每个方法都对应于一个借口,以上方法分别对应的借口为ActionListener,MouseListener,MouseMotionListener,KeyListener

如下是事件机制的应用举例,通过对输入账号和密码的检验,实现登陆的过程
public class QQDemo {
	
	
		/**
		 * 定义一个主函数入口
		 * @param args
		 */
		public static void main(String[] args) {
			// 实例化一个改善后QQ登陆界面
			QQDemo qqim = new QQDemo();
			//调用显示登陆界面的方法
			qqim.showFrame();
		}
		
		//定义一个显示登陆界面的方法
		public void showFrame(){
			//实例化一个登陆界面
			JFrame jf = new JFrame();
			//设置登录界面的标题
			jf.setTitle("QQ登陆");
			//设置登录界面的大小
			jf.setSize(376, 291);
			//设置关闭时退出程序
			jf.setDefaultCloseOperation(3);
			//设置打开界面时界面的位置
			jf.setLocationRelativeTo(null);
			
			
			//实例化边框布局
			BorderLayout bl = new BorderLayout();
			//把边框布局添加到窗体中
			jf.setLayout(bl);
			
			
			/***************开始设置北面的图形*******************/
			//实例化一个ImageIcon类的对象
			ImageIcon image1 = new ImageIcon("images/qq/qq.jpg");
			//实例化一个标签
			JLabel jlb1 = new JLabel(image1);
			//把标签添加到窗体中
			jf.add(jlb1,BorderLayout.NORTH);
			/***************结束设置北面的图形*******************/
			
			
			/****************开始设置西面的图形******************/
			//实例化一个图形类的对象
			ImageIcon image2 = new ImageIcon("images/qq/photo.jpg");
			//实例化一个标签
			JLabel jbl2 = new JLabel(image2);
			//把标签添加到西面
			jf.add(jbl2,BorderLayout.WEST);
			/****************结束设置西面的图形******************/
			
			
			/****************开始设置中间的布局******************/
			//实例化一个流体布局
			FlowLayout fl1 = new FlowLayout(FlowLayout.LEFT);
			//实例化一个面板
			JPanel jp1 = new JPanel();
			jp1.setLayout(fl1);
			
			//实例化一个下拉框
			JTextField jcb = new JTextField();
			//把下拉框设置为可编辑类型
			//jcb.setEditable(true);
			//设置下拉框的大小
			jcb.setPreferredSize(new Dimension(185,24));
			//把下拉框添加到jp1中
			jp1.add(jcb);
			
			//实例化一个账号注册标签
			JLabel jlb3 = new JLabel("注册账号");
	        //把账号注册标签添加到面板中
			jp1.add(jlb3);
			
			//实例化一个密码输图框
			JPasswordField jpw = new JPasswordField();
			//设置密码输入框的大小
			jpw.setPreferredSize(new Dimension(185,24));
			//把密码输入框添加到面板中
			jp1.add(jpw);
			
			//实例化一个找回密码标签
			JLabel jlb4 = new JLabel("找回密码");
			//把找回密码标签添加到面板中
			jp1.add(jlb4);
			
			//实例化复选框
			JCheckBox jcb1 = new JCheckBox("记住密码");
			JCheckBox jcb2 = new JCheckBox("自动登录");
			//把复选框添加到面板中
			jp1.add(jcb1);
			jp1.add(jcb2);
			//把面板添加到窗体中
			jf.add(jp1,BorderLayout.CENTER);
			/****************结束设置中间的布局******************/
			
			
			/****************开始设置南面的布局******************/
			//实例化一个面板
			JPanel jp2 = new JPanel();
			//把面板添加到窗体中
			jf.add(jp2,BorderLayout.SOUTH);
			//实例化一个图标
			ImageIcon image3 = new ImageIcon("images/qq/denglu.jpg");
			//实例化一个登录按钮
			JButton jb = new JButton(image3);
			//把按钮添加到面板上
			jp2.add(jb);
			//设置按钮大小
			jb.setPreferredSize(new Dimension(178,28));
			/**
			 * 给按钮添加事件机制
			 */
			//实例化一个SLHListener对象
			SLHListener slhl = new SLHListener(jcb,jpw);
			//给事件源jb添加动作监听器的方法,绑定事件处理类的对象
			jb.addActionListener(slhl);
			/****************结束设置南面的布局******************/
			
			//设置窗体可见
			jf.setVisible(true);
		}

}




import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class SLHListener implements ActionListener{
    //存储输入的账号
	private JTextField tf;
	//存储输入的密码
	private JPasswordField pwf;
	//定义一个构造函数用于传递地址
	public SLHListener(JTextField tf,JPasswordField pwf){
		this.tf = tf;
		this.pwf = pwf;
	}
	public void actionPerformed(ActionEvent e) {
		//获取输入的账号
		String admin = tf.getText();
		//获取输入的密码
		char[] secret = pwf.getPassword();
		String sec = new String(secret);
		//对输入的内容进行判断,做出相应的反应
		if(admin.equals("1075345532")&&sec.equals("930221")){
			//建立一个登陆后得到的窗体
			JFrame qq2013 = new JFrame();
			qq2013.setTitle("qq2013");
			qq2013.setLayout(new FlowLayout());
			qq2013.setSize(281, 693);
			
			qq2013.setDefaultCloseOperation(2);
			qq2013.setVisible(true);
			
		}else{
			JOptionPane.showMessageDialog(null, "输入的密码或账号错误");
		}
		
		
	}

}

 
分享到:
评论

相关推荐

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有声明没有实现的方法,可以视为没有方法体的虚方法。例如: ```csharp public ...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...

    详细解析Java中抽象类和接口的区别

    其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这两种机制虽然在某些场景下可以互相替代,但它们在设计原则、实现细节以及应用场景上存在明显的区别。了解这些差异有助于开发者在面对具体...

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    Java源代码:抽象类和接口

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...

    抽象类和接口

    在编程领域,抽象类和接口是面向对象设计中的两个重要概念,它们用于实现代码的抽象和多态性。本实验旨在帮助你深入理解和熟练运用这两种机制。 首先,让我们来看看抽象类。抽象类是一种不能被实例化的类,它通常...

    第7章 抽象类与接口.ppt

    在Java编程语言中,抽象类和接口是两种重要的机制,用于实现代码的抽象和多态性。本章主要探讨了这两个概念以及它们在实际编程中的应用。 首先,抽象类(abstract class)是一种不能被实例化的类,它通常含有至少一...

    java 抽象类与接口的区别

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们都用于实现多态性,但各自具有不同的特点和应用场景。了解并熟练掌握它们的区别对于编写高质量的Java代码至关重要。 首先,抽象类是一种不能被...

    Java 接口和抽象类

    Java 编程语言提供了两种机制来实现面向对象编程的多态性:接口和抽象类。这两种机制使得 Java 应用开发具有灵活性和敏捷性。 抽象类 抽象类是一种特殊的类,它不能被实例化,不能被直接使用,而是作为其他类的...

    浅析Java抽象类和接口的比较

    Java中的抽象类(abstract class)和接口(interface)都是用于创建抽象化模型的重要工具,它们在面向对象编程中扮演着核心角色。这两种机制都允许我们定义一组方法的签名,但不提供具体实现,从而实现“设计契约”...

    dot Net中抽象类与接口的区别

    在.NET框架中,抽象类和接口都是用于实现多态性和代码重用的关键概念,它们各自具有独特的特性和用途。下面将详细阐述这两种概念的异同点。 首先,无论是抽象类还是接口,它们都无法直接被实例化,都需要通过继承来...

    JAVA中抽象类与接口的区别

    在Java编程语言中,抽象类(Abstract Class)与接口(Interface)是实现抽象与多态性的两种关键机制。这两种机制的出现,极大地丰富了Java语言的面向对象特性,并为开发者提供了更为灵活的设计选择。下面将从多个...

    抽象类和接口 测试结果

    在编程世界中,抽象类和接口是面向对象设计的重要概念,它们都用于实现代码的抽象和多态性,但有着不同的使用场景和规则。这里我们将深入探讨这两种机制,并结合给出的"codePiece"代码片段来分析它们在实际应用中的...

    介绍一下抽象类和接口的异同

    本文将深入探讨抽象类与接口的异同,并结合实际应用场景来帮助理解这两种机制。 首先,让我们从定义开始。抽象类是不能被实例化的类,它通常包含抽象方法,这些方法没有具体的实现,需要子类来完成。抽象类是为了...

    抽象类和接口的区别抽象类和接口的区别.pdf

    抽象类和接口是 Java 语言中两种不同的机制,用于实现对象的抽象描述。虽然它们之间存在着一定的相似性,但它们在定义、实现和使用方面存在着很大的区别。 首先,抽象类是一个抽象的概念,用于描述一个对象的基本...

    抽象类、接口、内部类、异常

    课后作业中的问题涉及到抽象类、接口、内部类的特点和区别,异常处理机制以及关键字`this`、`super`、`final`的用法,包机制,访问权限修饰符,接口实现与类继承的区别等Java基础知识。实践题要求设计实现接口、ATM...

    Java抽象类和接口相关操作源码.rar

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个“Java抽象类和接口相关操作源码”压缩包中,你可能会找到一系列的实例代码,帮助初学者更好地...

Global site tag (gtag.js) - Google Analytics