接口练习

1.接口的定义
定义接口的关键字是:interface
格式:
public interface 接口名 extends 接口,... {
//接口中能定义什么?
public static final 数据类型 常量名 = 值;//定义常量。(常量名的所有字母都大写)。

(public) 返回值数据类型 方法名(数据类型 参数名,...);//定义抽象方法。
}
注意:接口定义常量不可修),方法只能定义抽象方法;接口只能继承接口(可为多个);
代码:
public interface NetJavaShape{
public final static String compName="蓝杰";

public void draw(int x1,int y1,int x2,int y2);
}

2.实现接口
实现接口的关键字:implements
格式:
public class 类名 extends 类或抽象类 implements 接口,... {

//当类实现接口后,有没有什么要求呢?
//类必须要实现接口中所有的抽象方法,否则程序报错。

}
注意:extends只能继承一个类

接口除了丰富类的继承、方法之外。
我们现在讲接口,主要是为了事件机制。
代码:
public class Impoval inplements NetJavaShape{
//实现接口中的方法
public void draw(int x1,int y1,int x2,int y2){
System.out.println("我画的是圆形");
}
}
public static void main(String args[]){
NetJavashape shape=new Impoval();
int x1=10;
int x2=20;
int y1=15;
int y2=25;
shape.draw(x1,y1,x2,y2);
}

3.接口和类的区别
1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引符的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以别的成员(如字段)。
2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
3、接口没有构造函数,类有构造函数。
4、接口不能进行运算符的重载,类可以进行运算符重载。
5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。
7.接口中的方法没有方法体{};
8.继承接口的类一定要实现接口中定义的方法;
9.类可以继承多个接口,但只能继承一个类!但接口只能继承接口

4.事件机制
手机
接电话
看信息
事件源:
1.java所有的图形界面类都可以作为事件源;
2.当发生的动作在哪一个组件上,那么该组件就是事件源。

事件监听方法:
给事件源添加监听器方法。 对象的监听器方法
ActionListener 动作监听器接口 addActionListener(ActionListener l);
MouseListener 鼠标监听器接口 addMouseListener(MouseListener l);
MouseMotionListener 鼠标移动监听器接口 addMouseMotionListener(MouseMotionListener l);
KeyListener 键盘监听器接口 addKeyListener(KeyListener l);

事件的处理者:
事件监听器是接口,不能实例化对象,那么就定义类去实现接口。这个类就是事件的处理者。

流程:

代码//事件监听机制

import java.awt.*;
import java.awt.event.*;

public class TestEvent {
public static void main(String[] args) {
Frame f = new Frame("Test");
Button b = new Button("Press Me!");

Monitor bh = new Monitor(); //实现了某种监听器接口的类的对象

b.addActionListener(bh); //注册

f.add(b, BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}

//实现了某种监听器接口的类
class Monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("A button has been pressed");
}
}
[java]
import java.awt.*;
import java.awt.event.*;

public class TestActionEvent {
public static void main(String[] args) {
Frame f = new Frame("Test");
Button b1 = new Button("Start");
Button b2 = new Button("Stop");

//一个监听器类被两个button监听
Monitor2 bh = new Monitor2();
b1.addActionListener(bh);
b2.addActionListener(bh);

b2.setActionCommand("Game over");

f.add(b1,"North");
f.add(b2,"Center");
f.pack();

f.setVisible(true);

}

}

class Monitor2 implements ActionListener {
public void actionPerformed (ActionEvent e) {
System.out.println("A button has been pressed," +
"the relative info is:\n" + e.getActionCommand());
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值