继承接口总结 监听器初步

 

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, "帐号或密码错误,请检查!");
		}

	}
}
 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值