接口

    • 1.finnal关键字的作用:
    • 2.高内聚低耦合
    • 3.抽象类(abstract):
    • 5.接口:
      • 1.定义:
      • 2.声明:
      • 3.实现接口:
    • 6.事件处理机制
  • (一)、键盘事件(KeyListener)
    • 7.键盘移动小球
    • 8.《贪吃的宝马》
    • 9.八方向的操作
  • (二)、鼠标操作(MouseLister)
    • 1.MouseListener单击操作
    • 2.MouseMotinListener(移动操作)
  • (三)、窗体事件(WindowListener)
  • (四)、综合测试:打字幕游戏

1.finnal关键字的作用:

finnal: 表示最终的不可变的,
继承可以提高代码的复用性和灵活性。但有时我们并不希望类中的方法被重写和修改,这时我们就需要用到final关键字。

final、abstract关键字修饰类:加在class前,权限符后,这样此类就不能有子类。

(1).finnal 修饰的变量,是常量. (不能被修改)

final int a=5;

(2).finnal 修饰的方法是最终的方法,是不能够被覆盖的。

 final public void show(){}

(3).由finnal 修饰的类是最终类,是不允许被继承的。
final class a{}

2.高内聚低耦合

高内聚含义:在类的内部的属性是紧密联合的
低耦合含义:在类与类之间是有很大区别的。

3.抽象类(abstract):

对共同的特征进行抽象。

抽象类的所有方法,继承了抽象类的子类,都需要实现抽象类                                                                              的方法。

abstract 加在权限符后,类型前。final加在权限符前。(有区别的)

abstract表示抽象的,可以修饰类和方法:
(1).由abstract修饰的方法,叫做抽象方法。只有方法声明,没有方法体

public abstract void show();

(2).由abstract修饰的类,叫做抽象类。抽象类不能创建对象。

abstract class hello{}

(3).如类中有抽象方法,则该类必定是抽象类。

abstract class hello{public abstract void show();
public abstract void show2();
public  void show();}

(4).抽象类中,可以没由抽象方法;

(5)、一个抽象类中的方法全部是抽象方法,那么我们把这个抽象类叫做接口

abstract class hello{public abstract void show();
public abstract void show2();
public  abstract void show();
}

5.接口:

1.定义:

一个抽象类中的方法全部是抽象方法,并且这个中根本没有必要声明成员变量,我们称作这样的类叫做纯抽象类,在JAVA中纯抽象类叫做:接口.

2.声明:

interface 接口名
{常量声明;
抽象方法声明:}

3.实现接口:

实现的时候不必要是(抽象类)

class 类名 implements 接口名{public 抽象方法声明
}

6.事件处理机制

(1)、事件源:产生事务的组件。(按钮、窗体。画布)谁是监听者,谁是事件源。
(2)、事件:用户在界面上的操作。
(3)、监听器:是一个专门用于处理事件的的类,它接收事件并且产生相应的动作。
(4)、如果希望某一个事件源能够产生反应,要事先为其注册相应的监听器。

(一)、键盘事件(KeyListener)


接口的实现:

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;public class panel1 extends Panel implements KeyListener {   //监听者 panel  public void paint(Graphics g){g.fillOval(100,100,200,200);}@Overridepublic void keyTyped(KeyEvent e1) {}@Overridepublic void keyPressed(KeyEvent e) {System.out.println("您按下了:"+e.getKeyChar());  //按下的字符System.out.println("按下的是:"+e.getKeyCode());   //按下的ascll码}@Overridepublic void keyReleased(KeyEvent e) {System.out.println("您松开了:"+e.getKeyChar());System.out.println("您松开了:"+e.getKeyCode());}
}
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.SQLOutput;
import java.util.*;
import java.awt.*;
import java.lang.Math;
public class hello {public static void main(String[] avgs) {Frame f=new Frame("贪吃的宝马");f.setSize(300,300);panel1 p1=new panel1();f.add(p1);f.addKeyListener(p1);  //注册监听器// p1.addKeyListener(p1);  //为画板注册监听器//f.setLocationRelativeTo(null);f.setVisible(true);}
}

7.键盘移动小球

类方法:

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;class panel extends Panel implements KeyListener {   //实现接口int x=200;int y=200;public void paint(Graphics g){g.fillOval(x,y,40,40);}public void keyPressed(KeyEvent e){   //接口方法声明if(e.getKeyCode()==37){  //左x--;}if(e.getKeyCode()==38){  //上    y--;}if(e.getKeyCode()==39){  //右  x++;}if(e.getKeyCode()==40){  //下   y++;}repaint();}public void keyReleased(KeyEvent e){  //接口方法声明}public void keyTyped(KeyEvent e){  //接口方法声明}
}

主方法:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.SQLOutput;
import java.util.*;
import java.awt.*;
import java.lang.Math;
public class hello {public static void main(String[] avgs) {Frame f=new Frame("移动的小球");f.setSize(500,500);panel p=new panel();f.add(p);f.addKeyListener(p);  //为frame注册监听器p.addKeyListener(p);  //为panel注册监听器f.setLocationRelativeTo(null);f.setVisible(true);}
}

8.《贪吃的宝马》

基本是路:
首先我们要使用画板frame和画笔paint;首先第一步要绘画宝马车标。然后进行实列化。然后把画笔加入画板当中去。然后接入接口 KeyLister。利用键盘里面的接口方法,进行键盘控制。37=左,38=上,39=右,40=下。然后在画板中注册一个画板的监听器和画笔的监听器(主要是为了让鼠标能够动);

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;class panel extends Panel implements KeyListener {  //插入接口int x=200;int y=200;int wideth=40;int height=40;int m=10;int n=10;int r1=0;int g1=0;int b1=0;public void paint(Graphics g){//绘制食物Color c5=new Color(r1,g1,b1);g.setColor(c5);g.fillOval(m,n,20,20);//绘制宝马:Color c=new Color(0,0,0);g.setColor(c);g.fillOval(x,y,wideth,height);Color c1=new Color(255,255,255);g.setColor(c1);g.fillOval(x+25,y+25,wideth-50,height-50);Color c2=new Color(0,0,255);g.setColor(c2);g.fillArc(x+25,y+25,wideth-50,height-50,90,90);g.fillArc(x+25,y+25,wideth-50,height-50,270,90);}public void keyPressed(KeyEvent e){    //抽象方法//键盘控制和移速if(e.getKeyCode()==37){  //左x=x-10;}if(e.getKeyCode()==38){  //上y=y-10;}if(e.getKeyCode()==39){  //右x=x+10;}if(e.getKeyCode()==40){  //下y=y+10;}if(m>=x&&m<=x+wideth&&n>=y&&y<=y+height){  //假如吃到食物//食物随机Random r=new Random();m=r.nextInt(1480)+1;n=r.nextInt(900)+1;r1=r.nextInt(255)+1;g1=r.nextInt(255)+1;b1=r.nextInt(255)+1;//长大wideth=wideth+20;height=height+20;}repaint();  //动态}public void keyReleased(KeyEvent e){   //抽象方法}public void keyTyped(KeyEvent e){     //抽象方法}
}
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.SQLOutput;
import java.util.*;
import java.awt.*;
import java.lang.Math;
public class hello {public static void main(String[] avgs) {Frame f=new Frame("贪吃的宝马");f.setSize(1880,1000);panel p=new panel();f.add(p);f.addKeyListener(p);  //注册监听器p.addKeyListener(p);  //为画板注册监听器f.setLocationRelativeTo(null);f.setVisible(true);}
}

9.八方向的操作

基本思路:
我们要使用KeyLister的接口,然后分别使用按下的抽象方法和松开的方法。当我们松开的时候,我们把值赋值为false.

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
class panel extends Panel implements KeyListener {  //实现接听功能int x=100;int y=100;boolean press_a;boolean press_w;boolean press_d;boolean press_s;public void paint(Graphics g){Font f=new Font("黑体",Font.BOLD,50);g.setFont(f);Color c=new Color(0,0,0);g.setColor(c);g.drawString("*",x,y);}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {int i=e.getKeyCode();  //当按下操作if(i==37){x=x-10;}if(i==38){y=y-10;}if(i==39){x=x+10;}if(i==40){y=y+10;}switch (i){case 37: press_a=true;break;case 38: press_w=true;break;case 39:press_d=true;break;case 40:press_s=true;break;default:break;}if (press_a&&press_s){x=x-10;y=y+10;}if (press_a&&press_w){x=x-10;y=y-10;}if (press_w&&press_d){x=x+10;y=y-10;}if (press_d&&press_s){x=x+10;y=y+10;}repaint();}@Overridepublic void keyReleased(KeyEvent e) {int i=e.getKeyCode();   //当松开操作switch (i){case 37: press_a=false;break;case 38: press_w=false;break;case 39:press_d=false;break;case 40:press_s=false;break;default:break;}}
}
import java.awt.*;
public class hello {public static void main(String []avgs){Frame f=new Frame("小球移动八个方向");f.setSize(800,800);f.setLocationRelativeTo(null);panel p=new panel();f.add(p);f.addKeyListener(p);p.addKeyListener(p);f.setVisible(true);}
}

(二)、鼠标操作(MouseLister)

1.MouseListener单击操作

基本知识点:调用MouseLister接口,然后使用构造方法mouseClicked(),然后通过 e.getX()获得,x的坐标。通过e.getY()获得y的坐标。即可

import java.awt.*;import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;class panel extends Panel implements MouseListener {int []x=new int[20];int []y=new int[20];String []s1=new String[]{"1","2","1","2","1","2","1","2","1","2",};   //利用数组进行储存int j=0;//画框架public void paint(Graphics g){//设置颜色Color c=new Color(0,0,0);g.setColor(c);//矩形g.drawRect(200,200,450,450);//线g.drawLine(200,350,650,350);g.drawLine(200,500,650,500);g.drawLine(350,200,350,650);g.drawLine(500,200,500,650);if(j%2==0) {Color c1 = new Color(255, 0, 0);g.setColor(c1);}Font f=new Font("黑",Font.BOLD,30);g.setFont(f);x[0]=100;y[0]=100;for(int i=0;i<j+1;i++) {g.drawString(s1[i], x[i], y[i]);}//判断输赢j++;}@Overridepublic void mouseClicked(MouseEvent e) {x[j]=e.getX();y[j]=e.getY();if(x[j]>200&&x[j]<350&&y[j]>200&&y[j]<350){x[j]=275;y[j]=275;}if(x[j]>200&&x[j]<350&&y[j]>350&&y[j]<500){x[j]=275;y[j]=425;}if(x[j]>200&&x[j]<350&&y[j]>500&&y[j]<650){x[j]=275;y[j]=575;}if(x[j]>350&&x[j]<500&&y[j]>350&&y[j]<500){x[j]=425;y[j]=425;}if(x[j]>350&&x[j]<500&&y[j]>200&&y[j]<350){x[j]=425;y[j]=275;}if(x[j]>350&&x[j]<500&&y[j]>500&&y[j]<650){x[j]=425;y[j]=575;}if(x[j]>500&&x[j]<650&&y[j]>500&&y[j]<650){x[j]=575;y[j]=575;}if(x[j]>500&&x[j]<650&&y[j]>200&&y[j]<350){x[j]=575;y[j]=275;}if(x[j]>500&&x[j]<650&&y[j]>350&&y[j]<500){x[j]=575;y[j]=425;}repaint();}@Overridepublic void mousePressed(MouseEvent e) {System.out.println("鼠标被按下:");}@Overridepublic void mouseReleased(MouseEvent e) {System.out.println("鼠标被松开");}@Overridepublic void mouseEntered(MouseEvent e) {System.out.println("----------鼠标进入框体--------");}@Overridepublic void mouseExited(MouseEvent e) {System.out.println("*********鼠标离开框体**********");}  //实现接听功能
import java.awt.*;
public class hello {public static void main(String []avgs){Frame f=new Frame("小球移动八个方向");f.setSize(900,900);f.setLocationRelativeTo(null);panel p=new panel();f.add(p);f.addMouseListener(p);p.addMouseListener(p);f.setVisible(true);}
}

2.MouseMotinListener(移动操作)

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;class panel extends Panel implements MouseMotionListener {int x=100;int y=100;public void paint(Graphics g) {g.fillOval(x,y,20,20);}@Overridepublic void mouseDragged(MouseEvent e) {  //鼠标按下并拖动
//        x=e.getX();
//        y=e.getY();
//        repaint();}@Overridepublic void mouseMoved(MouseEvent e) {   //鼠标移动不用按下x=e.getX();y=e.getY();repaint();}
}
import java.awt.*;
public class hello {public static void main(String []avgs){Frame f=new Frame("小球移动八个方向");f.setSize(900,900);f.setLocationRelativeTo(null);panel p=new panel();f.add(p);f.addMouseMotionListener(p);p.addMouseMotionListener(p);f.setVisible(true);}
}

(三)、窗体事件(WindowListener)

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;class panel extends Panel implements WindowListener {public void paint(Graphics g){g.fillOval(10,10,100,100);}@Overridepublic void windowOpened(WindowEvent e) {System.out.println("窗口被打开");}@Overridepublic void windowClosing(WindowEvent e) {  //右上角的按钮System.out.println("窗口已经被关闭---------");System.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {  //}@Overridepublic void windowIconified(WindowEvent e) {System.out.println("窗口从正常状态转换为最小化");}@Overridepublic void windowDeiconified(WindowEvent e) {System.out.println("窗口从最小化转换为正常状态");}@Overridepublic void windowActivated(WindowEvent e) {System.out.println("窗口设置为活动窗口");}@Overridepublic void windowDeactivated(WindowEvent e) {System.out.println("窗口已经不是活动窗口");}
}
import java.awt.*;
public class hello {public static void main(String []avgs){Frame f=new Frame("小球移动八个方向");f.setSize(900,900);f.setLocationRelativeTo(null);panel p=new panel();f.add(p);f.addWindowListener(p);f.setVisible(true);}
}

(四)、综合测试:打字幕游戏

import java.awt.*;import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
class panel extends Panel implements Runnable, KeyListener {int sum=0;String []s=new String[]{"a","b","c","d","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};int []x=new int[500];int []y=new int[550];
//对数组进行自定义初始化public panel(){//初始化数组for(int i=0;i<10;i++){Random r=new Random();int m1=r.nextInt(461)+1;x[i]=m1;}for(int i=0;i<10;i++){Random r=new Random();int m2=r.nextInt(483)+1;y[i]=m2;}for(int i=0;i<10;i++){Random r=new Random();int idex=r.nextInt(25);s[i]=s[idex];}}//进行绘画的操作public void paint(Graphics g){int m=0;Color c=new Color(255,0,0);g.setColor(c);Font f=new Font("黑体",1,30);g.setFont(f);while (m++<10){g.drawString(s[m],x[m],y[m]);}g.fillRect(0,0,200,50);g.setColor(Color.BLACK);g.drawString("您得分为:"+sum,0,30);}
//进行移动的操作@Overridepublic void run() {while (true){for(int i=0;i<10;i++){y[i]++;if(y[i]>=483){Random r=new Random();int m1=r.nextInt(461)+1;x[i]=m1;y[i]=0;int idex=r.nextInt(25);s[i]=s[idex];}}try {Thread.sleep(10);} catch (InterruptedException e) {System.out.println("错误");break;}repaint();}}
//进行删除的操作@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {char keyc=e.getKeyChar();int NowHeight=-1;int NoeIdex=-1;Random r=new Random();for (int i = 0; i <10; i++) {if (keyc==s[i].charAt(0)){if(y[i]>NowHeight){  //进行求最大值  y坐标记录运行NowHeight=y[i];NoeIdex=i;}}}if(NoeIdex!=-1){y[NoeIdex]=0;int m1=r.nextInt(461)+1;int m2=r.nextInt(25);x[NoeIdex]=m1;s[NoeIdex]=s[m2];sum=sum+10;}}@Overridepublic void keyReleased(KeyEvent e) {}
}
import java.awt.*;
public class hello {public static void main(String []avgs){Frame f=new Frame("小球移动八个方向");f.setSize(500,500);f.setLocationRelativeTo(null);panel p=new panel();Thread t=new Thread(p);t.start();f.add(p);f.addKeyListener(p);p.addKeyListener(p);f.setVisible(true);}
}

57.【Java 接口】相关推荐

  1. Java接口和Java抽象类(转,原文已被删除)

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  2. jmeter使用BeanShell Sampler测试自己写的java接口(一)

    上次直接使用jmeter里面的FTPsampler没有连接成功 现在想着自己写java代码,通过jmeter进行调用进行连接测试实现并发 代码引文: http://www.cnblogs.com/ch ...

  3. 57 java编程思想 创建窗口和程序片 可视编程和Beans

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 57.j ...

  4. Java接口对Hadoop集群的操作

    Java接口对Hadoop集群的操作 首先要有一个配置好的Hadoop集群 这里是我在SSM框架搭建的项目的测试类中实现的 一.windows下配置环境变量 下载文件并解压到C盘或者其他目录. 链接: ...

  5. 推荐一个 Java 接口快速开发框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天给小伙伴们介绍一个Java接口快速开发框架-magic-api 简介 magic-api 是一个基于 Java 的接口快速开发框 ...

  6. java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?

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

  7. Java接口和Java抽象类

    Java接口和Java抽象类有太多相似的地方,又有太多特别的地方,究竟在什么地方,才是它们的最佳位置呢?把它们比较一下,你就可以发现了. 1.Java接口和Java抽象类最大的一个区别,就在于Java ...

  8. java接口深入理解,深入理解Java接口

    从java接口是什么到为什么,理解java接口,主要解决三个问题 1.java接口是什么 2.java接口为什么 3.java接口怎么用 java接口是什么 接口是方法的抽象,通过接口规定类需要实现那 ...

  9. java安全接口调用_步骤3:调用Java接口

    本文档主要介绍了通过调用Java接口生成工作密钥和进行通用数据加解密的操作方法. 整体流程 初始化SDK.具体内容请参见 配置Java接口.具体内容请参见 初始化SDK 使用以下方法初始化SDK.hs ...

  10. 对接第三方平台JAVA接口问题推送和解决

    对接第三方平台JAVA接口问题推送和解决 参考文章: (1)对接第三方平台JAVA接口问题推送和解决 (2)https://www.cnblogs.com/CreateMyself/p/7295879 ...

最新文章

  1. 让 VAGRANT 启动并运行起来
  2. 第十六届全国大学智能车竞赛全国总决赛竞速组别成绩与奖项
  3. python详细安装教程3.8-python3.8下载及安装步骤详解
  4. 噬血代码进不了游戏_玩家认可,二次元魂类游戏,《噬血代码》在三个方面做出了差异化...
  5. Coursera课程Python for everyone:Quiz: Many-to-Many Relationships and Python
  6. TP框架中的A方法和R方法
  7. 瞎学的几天 ----java多线程和线程池
  8. PyTorch学习—22.PyTorch中常见报错
  9. [2019沈阳网络赛D题]Dawn-K's water(点分治)
  10. CSS 布局 - 水平 amp;amp; 垂直对齐,全面的水平垂直居中方案
  11. Spring Boot和Dubbo整合
  12. 支付宝客户端java版_支付宝对接支付-JAVA版
  13. sqlite3 判断数据库和表的状态
  14. 简述对互联网产品经理的认识
  15. 【九天教您南方cass 9.1】 14 坐标数据的纠正
  16. 怎么学习PLC技术?
  17. Flask-MDict搭建在线Mdict词典服务
  18. 关于职业规划的座谈会
  19. 研究方法|用CiteSpace进行科学文献可视化分析
  20. xp计算机用户名和密码忘记了怎么办,XP系统开机密码忘记了怎么办?

热门文章

  1. 那些年·我们读过的专业书籍
  2. 洛古P2196 题解 兼本人第一篇题解
  3. 字符串转换成整数,通配符的字符串匹配问题
  4. Xcelium基础使用
  5. 又一家!天数智芯天垓100 产品卡与龙蜥操作系统完成产品兼容互认证
  6. 基础算法练习200题09、水池注水
  7. java线程知识初级
  8. Navicat 12 for MongoDB破解步骤
  9. 戴森《2022年全球头发研究报告》重磅发布 未来拟斥资5亿英镑实现20项全新科技
  10. top1 top5 概念