100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 看完这篇文章后 妈妈再也不用担心我搞不懂java中的接口和监听器啦

看完这篇文章后 妈妈再也不用担心我搞不懂java中的接口和监听器啦

时间:2019-12-15 07:53:41

相关推荐

看完这篇文章后 妈妈再也不用担心我搞不懂java中的接口和监听器啦

java中的接口与监听器

一、继承的定义

在了解接口之前,我想我们得先来弄清楚继承这一个概念,java是一个面向对象编程的软件,所以在java中我们需要去定义类,众所周知,类具有方法和属性,由此,当我们遇到一些类他们之间的一些属性与方法是相同的时候,为了不在这些类中重复地去定义这些属性和方法,这时我们就需要定义一个父类,让这些类从获得(继承)这些属性和方法,就像老师和学生,他们是两个不同的类,但是他们之间具有相同的属性和方法,比如说姓名、性别和年龄。继承的定义就是子类从一个父类中继承其保护类型为publicprotected这两种类型的属性和方法

继承的语法格式为:

数据保护类型+class+类名+extends+父类名+{程序主体}

比如我们可以看程序

//定义第一个父类Fatherstylepublic class Fatherstyle{int age; //定义年龄String name; //定义姓名int number; //定义学号public void show(){System.out.println("姓名: "+name+" 年龄: "+age+" 学号: "+number);}}

然后我们在定义一个子类,从父类中继承属性和方法,继承之后,我们就可以直接子类中调用父类中的方法了

//定义一个子类Sonstylepublic class Sonstyle extends Fatherstyle{public static void main(String[] args){Sonstyle ui=new Sonstyle();ui.name="张三";ui.age=14;ui.number=12367;ui.show();}}

这时我们运行程序在控制台(Console)就可以看到输出的内容为

姓名: 张三 年龄: 14 学号: 12367

总的来说(个人理解):

继承能给我们带来的优势是,他能省去许多相似的代码,对于那些具有相同属性的类别,通过继承,我们就不需要去为每一个类单独去编写他们的属性与方法,省去了许多繁杂步骤,同时也能使得我们的代码简便易理解,但是我们需要注意的是,继承不能是多继承的,java中的类除了继承了java本身的类之外,他只能再继承一个父类,(可以理解为亲生父亲就只有一个,不会有第二个一样就是public class 子类名 extends 父类名1 父类名2…… )这样继承的话java会报错,再java的API文档中,就有许多类别除了自己特有的属性与方法之外,还会介绍其他的从其他父类中继承的方法。

二、接口

说完了继承之后,下面我们可以来看看接口,**在我们的生活中有些事情是固定的一项特征,比如像我们说的每一个人都有一个特定名字,每一座城市都有一个固定的邮政编码,每一个大学都会有一个特定的名字,每一个快递都会寄到一个特定的地址……**这些事物都相当与一些固定的东西,短时间内无法改变,我们都会一直用,他不能随意更改,这时我们就想到了接口

百度百科对接口的定义是:

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

从中我们可以知道:

在Java中,接口是一个储存特定属性,和一些抽象方法的定义方法。关于接口的格式是这样的

1、接口的定义方式

public interface 接口名{程序体}

2、接口属性的定义方式为:

public static 数值类型 属性名=值;

public final 数值类型 属性名=值;

static和final的意思与静态的,最终的,不易改变的这类意思相似,即接口中的属性是一个定值

3、接口中方法的定义方式:

public abstract 返回值类型 方法名(参数1,参数2,参数3);

4、在类中添加接口的格式为:

public class 类名 implements 接口名1,接口名2{程序体}

特别需要注意的是

在接口中,我们可以添加多个接口,跟前面说的继承有些区别,接口中的属性可以由此类直接引用,但是由于接口中定义的方法是抽象的,我们在引用接口的类中必须对接口中所有的方法进行重写,这一项我们可以在下面的程序里面看到接口因为是抽象的,所以他不能去定义一个对象!

还是上面的程序我们接着用做例子

public interface Fatherhomeland {public static int postcode=410000;public final String address ="湖南省长沙市";}

public interface Fatherschool {public static String Schoolname="中南大学";public static String Englishname="Center South University";public static String Adderss="长沙市岳麓区";//定义了接口中的方法 abstract 是抽象的的意思public abstract void show1(int a);}

下面我们在当前类中引用接口

public class Sonstyle extends Fatherstyle implements Fatherhomeland,Fatherschool{//对接口中的方法进行重写时,需要把abstract去掉public void show1(int a) {System.out.println("学校名称:"+Sonstyle.Schoolname);System.out.println("英文名称:"+Sonstyle.Englishname);System.out.println("学校地址:"+Sonstyle.Adderss);}public static void main(String[] args){Sonstyle ui=new Sonstyle();ui.name="张三";ui.age=14;ui.number=12367;ui.show();//从这个语句中我们可以看到,接口中可以直接用 类.属性名 引用接口中的属性 System.out.println("邮政编码:"+Sonstyle.postcode);System.out.println("地址:"+Sonstyle.address);ui.show1(3);}}

最后在控制台(Console)中输出的结果为

姓名 张三年龄14学号12367

邮政编码:410000

地址:湖南省长沙市

学校名称:中南大学

英文名称:Center South University

学校地址:长沙市岳麓区

对于接口

我们可以知道,它的属性是一个特定的值,接口中的方法是抽象的方法,他需要在接口中的类中被重写,这样与我们下面要讲的监听器有着密切相关的关系,我们可以看到,当我们的鼠标点击或者键盘按下时,会有不同的反应,我们不可能为每个反应去写一个监听器,这时接口的作用就发挥到了极致,其实我们下面要讲的监听器就是接口,通过对监听器里面的方法进行不同的重写,这样就形成了不同的反应下面我们来看看监听器

java中的事件监听器

监听器通俗来理解的话,是一个响应机制,即当我们有什么操作的时候,监听器会接受一些信息,然后传递给另外的类,执行特定的方法。在java中为每种类型的事件都设定了监听器,常用的是鼠标监听器 (MouseListener)、动作监听器(ActionListener)、键盘事件监听器(KeyListener)

事件监听的实现步骤为:

第一步:确定事件源。

第二步:确定事件类型

第三步:创建一个类,实现对应类型的接口。

第四步:创建监听器的对象,给事件源组件添加事件监听器

对于监听器的话:我们可以以制作一个类似于QQ的登陆界面一样,当我们输入账号和密码,通过监听器判断账号和密码是否正确,进而弹出另外一个界面。

写在前面

在这个登陆界面的程序代码中,我们还需要用到包的知识,因为我们要编写一个登录界面的话,需要一些在java的API文档中的一些类,顶级容器界面类(JFrame)、按钮类(JButton)、文本输入框类(JTextField)……,我们要使用这些类别时,我们需要在类的开头用import来声明我们需要使用的这些类,我现在最常用的两个包是Java的API文档里面的javax.swing包和java.awt包,这些我们需要的界面组件大致都在这里面,而且所有的组件都必须放到顶级容器组件(JFrame)里面,下面我们来看程序:

import javax.swing.JPasswordField;//这个是允许输入单行多字文本的密码框import java.awt.Color;//这个是用于设置颜色的类import java.awt.Dimension; import java.awt.FlowLayout;//布局方式类,顶级容中的默认布局为绝对布局import javax.swing.JFrame; //顶级容器组件类import javax.swing.JLabel; //标签类import javax.swing.JTextField; //允许输入单行文本的输入框import javax.swing.ImageIcon; //一个 Icon 接口的实现,它根据 Image 绘制 Icon。用于添加图片import javax.swing.JButton; //按钮public class loginbegain {//显示界面的方法public void showUI() {//创建窗体对象JFrame loginFrame = new JFrame();//设置窗体的属性//设置窗体的大小loginFrame.setSize(600, 450);//设置窗体居中显示loginFrame.setLocationRelativeTo(null);//设置窗体的布局//Flowlayout为流式布局类。FlowLayout layout = new FlowLayout();loginFrame.setLayout(layout);//创建图片对象标签的大小Dimension Size=new Dimension(600,270);//创建一个图片对象ImageIcon icon = new ImageIcon("C:\\Users\\zr的帅气honor\\Pictures\\92.jpg");//添加图片对象时要注意把文件格式改成 文件名.jpg的形式JLabel iconLabel = new JLabel(icon);iconLabel.setPreferredSize(Size);//添加到窗体上loginFrame.add(iconLabel);//创建账号标签JLabel Login = new JLabel(" 账号");Login.setForeground(Color.BLUE);loginFrame.add(Login);//创建输入框对象JTextField nameIn = new JTextField();//设置输入框的大小Dimension inputSize = new Dimension(400, 30);nameIn.setPreferredSize(inputSize);//添加到窗体上loginFrame.add(nameIn);//创建注册账号的标签JLabel registerLabel = new JLabel("加入我们 ");registerLabel.setForeground(Color.BLUE);//添加到窗体上loginFrame.add(registerLabel);//创建密码标签JLabel mm=new JLabel("密码");mm.setForeground(Color.BLUE);loginFrame.add(mm);//创建密码框JPasswordField mmk=new JPasswordField();mmk.setPreferredSize(inputSize);loginFrame.add(mmk);JLabel ccgb=new JLabel("忘记密码");ccgb.setForeground(Color.BLUE);loginFrame.add(ccgb);//设置按钮框的大小Dimension andx=new Dimension(100,30);//创建一个登录按钮JButton an=new JButton("登录");an.setForeground(Color.BLACK);an.setPreferredSize(andx);loginFrame.add(an);//设置窗体可见 loginFrame.setVisible(true);loginFrame.setVisible(true);response1 judge=new response1();judge.k1=nameIn;nameIn.addActionListener(judge);judge.k2=mmk;mmk.addActionListener(judge);an.addActionListener(judge);}//主方法public static void main(String[] fdsfds) {//创建界面对象loginbegain ui = new loginbegain();//调用显示界面的方法ui.showUI();}}

下面我们来看这其中使用到的监听器:

监听器在代码中如下:

response1 judge=new response1();//文本框对象与界面文本框对象相等,这样才能获取文本judge.k1=nameIn;//文本框添加动作监听器nameIn.addActionListener(judge);judge.k2=mmk;//密码框对象添加动作监听器mmk.addActionListener(judge);//按钮框添加动作监听器an.addActionListener(judge);

//这一片代码区,我们写的是监听器的具体反应import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JPasswordField;import javax.swing.JTextField;public class response1 implements ActionListener{JTextField k1;JPasswordField k2;//输入框String account;//密码框String code;//这是对动作监听器(接口)的所有方法进行重写public void actionPerformed(ActionEvent e) {//获取账号输入框的文本account=k1.getText();//用System来测试这种用法是否正确,因为java中方法有很多,有时我们不知道到底用哪个所以可以用System来测试System.out.println(account);//获取密码框的文本code=k2.getText();System.out.println(code);//用if语句判断if("22416".contentEquals(account)) {System.out.println("用户名正确");if("123456".contentEquals(code)) {System.out.println("登陆成功!");newJFrame pi=new newJFrame();pi.show();}else {System.out.println("密码错误!请重新输入!");}}else {System.out.println("用户名不正确,请重新输入");}}}

补充一个第三个程序片中的newJFrame类的代码

import javax.swing.JFrame;public class newJFrame {public void show(){//创建一个新的窗体对象JFrame Topface= new JFrame();//设置顶级容器的大小Topface.setSize(200,200);//设置居中显示Topface.setLocationRelativeTo(null);//设置程序关闭时,窗体关闭Topface.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}//设置窗体可见Topface.setVisible(true);}}

下面我们就可以看到程序运行时的效果,打开程序,输入定义的帐号和密码

如图所示:

在新的界面中,我们也就可以去发挥想象创建更多的东西啦!(时间有限,弹出的界面中什么都没有,求谅解)

让我们理解理解一下监听器

在登陆界面中,大家也可以看到,代码中只使用到了动作监听器,大致意思是,当我们按下登录按钮时,java会获取账号信息和密码信息,并判断他们是否正确,进而达到登录的目的。监听器相当于一个动作响应者,即当我们有了某一操作时,被监听器捕捉到,然后监听器会进行进一步的操作(个人理解)。

最后的话

博客中有什么错误的地方,大佬们有空的话,可以帮小编指出来,我会根据问题好好修改的,以上对于监听器和接口的看法,许多都是个人的理解,俗话说“一千个读者中有一千个哈姆雷特”希望这些东西能帮到大家。编写不易,有空的话留下你们珍贵的评论和点赞吧,你们的点赞就是我最大的动力!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。