JAVA的接口、抽象类和事件监听机制

1.接口

定义

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 ——百度百科

由于JAVA不支持多重继承而只能进行单继承,许多方法难以简单快捷地实现。因此JAVA用接口这一方法进行解决,从而在一个类中实现多种方法。

定义接口的关键字为:interface
举例:public interface 接口名 extends 接口,…{}
此处的逗号和后面的省略号表示接口可以继承多个接口,同时应注意,接口作为一个特殊的类,只能继承接口类,并且不能实例化对象。在接口类中能定义的有:

  1. 常量
    public static final 数据类型 常量名 = 给定的值;
  2. 抽象方法
    public abstract 返回值数据类型 方法名(参数列表)…;\

注意:
定义接口类常量和抽象方法的关键字只能为public,在不作定义的情况下会自动补充成 public static final/public abstract.

使用

那么如何在类中插入接口来实现相关功能呢?很简单,只需要关键字implements.
举例:
public class 类名 extends 类|| 抽象类 implements 接口,… {};
注意:
1.抽象类和接口的顺序不能调换,必须extends在前implements在后。
2.可实现多个接口的继承。
3.当类实现接口后,必须要在类里重写接口中所有的抽象方法,包括接口本身的抽象方法、接口的父接口的抽象方法等等。

2.抽象类

使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
——百度百科

定义抽象类的关键字为abstract
public abstract 抽象类名 extends 类名 || 抽象类 implements 接口 {}
在抽象类中可以定义的有:

  1. 常量
    访问修饰符 static final 数据类型 常量名 = 值;
  2. 属性
    访问修饰符 数据类型 属性名;
  3. 抽象方法
    public、protected、默认 abstract 返回值数据类型 方法名(参数列表);
  4. 构造方法
    访问修饰符 构造方法名(参数列表){}
  5. 方法
    访问修饰符 返回值数据类型 方法名(参数列表){}

抽象类同样不能实例化对象,它集合了接口和类的所有内容。它与接口的区别在哪儿呢?

原文链接: javacodegeeks 翻译: ImportNew.com - jessenpan
译文链接: http://www.importnew.com/12399.html

抽象类 接口
可以提供默认的方法实现 必须自己重写所有的抽象方法
如果子类不是抽象类的话,需要提供抽象类中所有声明的方法的实现。 需要提供接口中所有声明的方法的实现(同上框)
可以有public protected private defalt 修饰符 只能用public修饰
与普通类基本相同,除了不能实例化抽象类 完全不同
抽象方法可以有main方法且可以运行 无法运行
可以继承一个类,实现多个接口 只能继承一或多个接口
如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码 如果你往接口中添加方法,那么你必须改变实现该接口的类
速度较快 速度较慢

注意
1.如果想使用多继承则必须选择用接口。
2.如果在写代码的过程中有些基本的方法将不断地更新或改动,则选择使用抽象类,这样可以不用改动实现该接口的类。
3.需要默认方法的实现则选择抽象类。

3.事件监听机制

首先,只有在图形界面上才能使用事件监听机制。
我将事件监听机制分为三个部分来理解:监听谁,怎样监听,监听后需要做什么。

扫描二维码关注公众号,回复: 9852112 查看本文章

事件源对象(监听谁)
只有容器组件和元素组件才可以当作是事件源对象。例如:JFrame\JButton\JLabel\JTextField\JPasswordField 等等。判断事件源对象的方法很简单,只需要想动作是发生在哪个组件上,并且需要对其进行操作,那么这个组件就是事件源对象。如点击登陆按钮后弹出一个新的界面,登陆按钮就是监听的源对象。

事件监听方法(怎样监听)
事件监听方法是由事件源对象提供的。它会收集发生在事件源对象的信息和发生在事件源对象上的动作信息,再传给事件监听方法的参数对象来进行后续的处理。因此,要给事件源对象添加事件监听方法,形如 源对象.add XXXListener

事件接口(监听后做什么)
事件接口也叫事件处理类(前文中认为接口是特殊的类)。
事件的接口是由事件监听方法决定的。事件接口的对象拿到信息后,会根据动作信息调用对应的事件处理方法,同时把信息封装到对应事件处理方法的参数对象中,最后执行方法中的代码。

下面通过举例来进行说明

任务:
点击登录界面上的登录按钮,显示一个新窗体。
分析:
事件源对象:登陆按钮
事件监听方法:addActionListener(ActionListener l)
这个动作监听方法是为按钮组件和输入框组件设计,可以将源对象上的信息和动作信息传递给参数对象,通过参数对象来进行处理(执行后续代码)。
事件接口(事件处理类):ActionListener
当ActionListener的对象拿到信息后,就会调用actionPerformed(ActionEvent e)事件处理方法,将事件源对象的信息和动作信息封装到ActionEvent的对象中,最后执行方法中的代码。

public class LoginListener implements ActionListener
//创建一个名为LoginListener的监听类
//实现了ActionListener接口
public void actionPerformed(ActionEvent e){
.....................
}
//在这个类里重写接口方法,即你要实现的功能
LoginListener al=new LoginListener();
jbu.addActionListener(al);
jt1.addActionListener(al);
//将监听类实例化一个对象al
//为对象jbu和jt1增加监听al,这样就可以在jbu和jt1发生动作的
时候监听到信息和动作信息并通过al传递,执行监听类中的代码。
发布了14 篇原创文章 · 获赞 11 · 访问量 2540

猜你喜欢

转载自blog.csdn.net/qq_43425914/article/details/88142406