Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的主要特点
1 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。
2 Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为。
3 Java接口的方法只能是抽象abstract的和公开public的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。
下面以此次代码来说明(person student ustudent test)
先创建person 接口
注: * person在此处是一个接口
* 接口的属性必须是public的静态常量(如age=20)
* 接口的方法必须是public的抽象方法
* 接口无构造方法,不能实例化对象
* 接口实际上是父类,但全部给子类去扩展
* 接口的子类 在实现接口的时候必须要实现接口中所有的方法
代码如下:
public interface person{
//接口的属性是 public static(=静态的) final,且是默认
//也即即使你不打,系统也会默认
public static final int age=20;
//与属性同样,方法也只能是 public abstract(= 抽象的)且是默认
public abstract void eat();
public abstract void rest();
}
定义父类 student
注:
* 定义student类,实现person这个接口
* 接口的子类 在实现接口的时候必须要实现接口中所有的方法
下面解释将会写在代码的注释里面
public class student implements person{
//public class student 这里就要屏蔽掉~~
// string 字符串 别总忘记含义呐...
public String name;
public student() {
System.out.println("学生");
}
public void setName(String name) {
/**
* this 指的是一个对象 相当于指针的作用 this.name和public String name同一个 已经定义了
* 然后再把其赋给了第二个name 就是setname定义的name
*/
this.name = name;
}
public static int age=21;
// 下面是方法
public void study() {
System.out.println(name + "在学习");
}
/**
* 下面实现接口的方法
* 和student类定义的方法的模式一样~
*/
public void eat(){
System.out.println(name+"在吃饭");
}
public void rest(){
}
}
在定义子类 ustudent
补充下子类的注意:
* 子类可以继承父类
* 子类只能有一个父类
* 子类继承了父类的属性和方法
* 子类可以定义自己特有的属性和方法
代码如下,解释依旧写在注释里
public class ustudent extends student {
public ustudent() {
System.out.println("大学生");
}
public static final int age=26;
// 子类特有的方法
public void cet4() {
System.out.println(name + "考四级");
}
/**
* 子类重写父类的方法
* 重写只能发生在子类重写父类的方法
* 方法的定义不变,只是改变方法体
* 也可以重写父类的接口
*/
public void study() {
System.out.println(name + "用大学生方法学习");
}
//在重写eat
public void eat(){
System.out.println(name+"在大学饭堂吃饭");
}
}
最后是test
// 多态:由于继承和重写机制,相同类型的对象调用相同的方法,得到的结果可能不一样
public static void main(String[] args) {
// 创建学生对象
student stu = new student();
stu.setName("aa");
stu.study();
stu.eat();// 调用student类,所以是吃饭
System.out.println(stu.age);
// 创建大学生对象
ustudent stu1 = new ustudent();
stu1.setName("bb");
System.out.println(stu.age);
// 3.如果子类重写了父类的方法,则子类类型的对象会调用重写之后的方法
stu1.study();
stu1.eat();// 调用ustudent类 所以是在大学饭堂吃饭
stu1.cet4();
// 自动转型:子类对象的类型可以自动转成父类类型
student stu2 = new ustudent();
stu2.setName("cc");
// 一个对象是调用父类的方法还是子类的方法,取决于对象本身的类型
stu2.study();
/**
* 虽然转成了父类student类型
* 但是eat这个方法已经被子类ustudent改写了
* 所以还是在大学饭堂吃饭
*/
stu2.eat();
/**
* 一个对象只能调用在其定义的类型及其父类中声明了的方法
* 一个类中的方法只能是这个类的对象及其子类对象去调用
*/
// 对于子类特有的属性和方法,只能是子类类型的对象才能调用
// stu2.cet4();
/**
* 强制转型:将父类类型的对象强制转成子类类型
* 可能会出现逻辑错误
*/
// UNStudent stu3 = (UNStudent)stu;
// 这里对比下
person dd = new student();
dd.eat();
//System.out.println(p1.age);
person ee = new ustudent();
ee.eat();
//System.out.println(p1.age);
}
}
下面是监听器
首先,先引用一段关于java事件的的概述
在Java开发中,对于事件的处理非常重要,比如响应键盘的输入、鼠标的点击、窗口的移动等等都要涉及到Java事件的应用。
Java事件由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的,事件类继承java.util.EventObject。很多基本的事件系统已经为我们定义好了,我们只要学会调用即可,但是为了更加灵活地满足特定的需求,我们有时候也需要自定义事件。
监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激
发一些操作。 下面依旧用代码来体现,解释皆写在注释里面。
import javax.swing.JFrame;
/**
* 登陆窗口类 继承JFrame
*/
public class jiemian extends JFrame {
// 主函数内不要写过多内容
public static void main(String args[]) {
// 创建窗体对象
jiemian j1 = new jiemian();
j1.initjiemian();
}
/**
* 初始化窗体方法
*/
public void initjiemian() {
// this:指调用当前initjiemian()方法的一个对象this,也即j1
/**
* 与上次制作界面的区别在于,j1用了this在代替~
*/
this.setTitle("登录窗体");
this.setSize(300, 200);
// 设置布局
java.awt.FlowLayout fl = new java.awt.FlowLayout();
this.setLayout(fl);
// 加组件
javax.swing.JLabel nameLabel = new javax.swing.JLabel("帐号:");
this.add(nameLabel);
javax.swing.JTextField nameField = new javax.swing.JTextField(20);
this.add(nameField);
javax.swing.JButton loginBut = new javax.swing.JButton("登录");
this.add(loginBut);
javax.swing.JLabel msgLabel = new javax.swing.JLabel();
this.add(msgLabel);
// 设置点击关闭按钮的时候要退出程序
this.setDefaultCloseOperation(3);
// 将窗体显示在屏幕上
this.setVisible(true);
// 下面是本次的重点 监听器
/**
* 创建动作监听器对象
*/
jiantingqi l1 = new jiantingqi(nameField, msgLabel);
/**
* 给按钮装上监听器
*/
loginBut.addActionListener(l1);
}
}
下面是监听器的代码
主要是体现在账号的是否正确输入
正确的输入是aaa,会显示欢迎,否则会显示输入错误
代码如下
import java.awt.event.ActionEvent;
/**
* 登录的监听器,实现动作监听器接口 实现接口就必须将接口的方法全部实现
*/
public class jiantingqi implements java.awt.event.ActionListener {
private javax.swing.JTextField jt;
private javax.swing.JLabel mlabel;
// 重载构造方法,要求在构造对象的时候必须传入输入框对象
public jiantingqi(javax.swing.JTextField jt, javax.swing.JLabel mlabel) {
this.jt = jt;
this.mlabel = mlabel;
}
// 实现接口中的方法
// 监听器中的方法是通过事件触发自动调用的
public void actionPerformed(ActionEvent e) {
// 获取帐号(获取帐号输入框中的数据)
// 得到输入框中的字符串
String name = jt.getText();
if (name.equals("aaa")) {
mlabel.setText("欢迎您!" + name);
} else {
mlabel.setText("");
// 弹出提示框
javax.swing.JOptionPane.showMessageDialog(null, "帐号或密码错误,请检查!");
}
}
}
分享到:
相关推荐
8. **匿名类**:使用匿名类简化代码,特别是在处理事件监听器等场景。 9. **函数式接口和lambda表达式**(选做):了解Java 8中引入的函数式接口和lambda表达式的概念及其应用。 #### 三、实验结论和思考 本实验以...
在Java中,所有可以生成事件的组件都实现了EventListener接口,或者包含了一个或多个事件监听器的注册方法。 3. **事件监听器** (Event Listener): 事件监听器是实现特定事件接口的类,用于接收并处理事件。例如...
Java通过事件监听器模型处理这些事件。我们可以定义事件处理器类并实现相应接口,然后将其注册到组件上。例如,为了处理按钮点击事件,可以实现`ActionListener`接口: ```java button.addActionListener(new ...
Servlet技术是Java EE(之前称为J2EE)中用于构建动态Web应用程序的核心技术之一,它允许...随着学习的深入,你还将了解到过滤器(Filter)、监听器(Listener)等高级特性,进一步提升Web应用的灵活性和可维护性。
- `Button` 用于创建按钮,可以通过 `setText` 方法设置按钮上的文字,并通过 `addActionListener` 方法为其添加动作监听器。 - `TextField` 用于创建文本输入框,可以设置其是否可编辑、是否启用等属性。 ### 3. ...
- `addWindowListener()`方法添加监听器,当用户关闭窗口时可以执行特定操作,如退出程序。 ### 2. 动态事件处理 #### 2.1 实现ActionListener接口 - 为了响应按钮点击事件,可以实现`ActionListener`接口。 - ...
- **监听器(Listener)**:可以监听特定事件,如会话创建、销毁,以及ServletContext、Servlet和请求对象的初始化和销毁。 通过实践这个简单的"第一个Servlet程序",初学者可以对Servlet的工作原理有初步了解。...
填空处应该包含事件监听器接口的实现,以便响应用户与按钮的交互。 通过这些笔试题目,可以考察应聘者对Java语言基础概念、语法、异常处理以及GUI编程的理解。这类问题能帮助招聘者初步判断应聘者是否具备良好的...
通过实现监听器接口或使用匿名内部类等方式。 **事件适配器**:提供了默认空实现的方法,便于覆盖感兴趣的事件方法。 **内部类**:可以在类内部定义。 **匿名内部类**:无需命名的内部类。 **三、FAQ** 关于...
5. **事件监听器** 实验中使用了 `ActionListener` 接口来处理按钮和文本框的点击事件。例如,`actionPerformed(ActionEvent e)` 方法会根据事件源执行相应的操作。 6. **图形用户界面 (GUI)** 实验中使用了 `...
这些组件的组合和事件监听器的设置使得用户能够与编辑器进行交互。 在源码中,我们还可以研究如何处理文件I/O操作。Java的`java.io`包提供了许多类,如`File`、`FileInputStream`、`FileOutputStream`和`...
- **监听器**:为了响应用户的输入,如键盘和鼠标操作,游戏会注册各种监听器,如KeyListener、MouseListener等,实现游戏逻辑的响应。 3. **多线程**: - **Game Loop**:游戏通常包含一个主循环(Game Loop),...
6. 事件驱动编程:使用事件监听器来响应用户的交互,如鼠标点击或拖动事件。 7. GUI组件:使用GUI库(如Java的Swing或JavaFX)创建游戏界面,包括牌堆、牌背、计分板等组件。 8. 状态管理:设计并实现游戏状态机,...
- **监听器的添加**:通常通过`addListener`方法将监听器添加到组件上。 #### 三、集合在项目中的运用 集合是Java编程中的重要概念,在企业级项目中有着广泛的应用。 - **集合接口**:如`Set`、`List`和`Map`等。...
- 回调函数、监听器或者使用`BlockingQueue`等并发容器也可以实现线程间的数据交换。 7. **线程返回数据** - 通常通过共享变量、`Future`、`Callable`接口结合`ExecutorService`来获取线程执行结果。 8. **同步...
- **启动 Spring 环境**:通过 ContextLoaderListener 监听器启动 Spring 上下文,并指定配置文件的位置。 - **配置 ShiroFilter**:在 `applicationContext.xml` 中,创建一个名为 "shiroFilter" 的 Bean,类型为...
- 使用事件监听器处理用户的输入和操作,如点击按钮时触发相应的计算或添加历史记录的逻辑。 - 数据结构如`Vector`用于存储历史记录,便于在界面上展示。 通过以上设计和实现,学生能够全面地掌握面向对象编程的...
3. 事件处理:Swing中的事件处理是通过事件监听器接口来实现的,例如ActionListener、MouseListener等。开发者可以实现这些接口并添加到组件上,以便在用户进行特定操作时执行相应的方法。此外,Swing还提供了事件...
学生需要学习如何布局组件,如使用FlowLayout、GridLayout或BorderLayout等布局管理器,以及如何添加事件监听器以响应用户的操作。 4. **事件处理**:在GUI中,事件处理是关键,学生需要编写ActionListener和...