接口练习

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());
     }
}



猜你喜欢

转载自allagain.iteye.com/blog/1703915