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); } @Override public void keyTyped(KeyEvent e1) { } @Override public void keyPressed(KeyEvent e) { System.out.println("您按下了:"+e.getKeyChar()); //按下的字符 System.out.println("按下的是:"+e.getKeyCode()); //按下的ascll码 } @Override public 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); } }