1.接口定义:
关键字是:interface
定义格式:
public interface 接口名 extends 接口,... {
//定义常量 注意:常量名的每一个字母都要大写,类也是一样!
public static final 数据类型 常量名 = 值;
(三个写任意一个或者两个三个都行)
static final 数据类型 常量名 = 值;
数据类型 常量名 = 值;
//定义抽象方法
public 返回值数据类型 方法名(数据类型 参数名,...);
public abstract 返回值数据类型 方法名(数据类型 参数名,...);
返回值数据类型 方法名(数据类型 参数名,...);
}
注:接口是一种特殊的类!
接口中只有一种访问修饰符,就是public
接口和普通类的区别:接口中方法全部抽象方法,定义关键字不同,接口可以继承多个
接口,接口被集成后方法要全部实现,接口不能实例化对象,
2.接口的实现:
实现接口的关键字:implements
实现格式:
public class 类名 extends 类或者抽象类 implements 接口名,... {
}
注意:
1.必须要实现接口中所有的抽象方法。
2.类去实现接口实际上就让类和接口拥有继承关系。
接口作用:
1.接口就是丰富类的继承。
2.事件机制中要使用接口。
3.团队开发
例子:
package 接口;
/*画圆的类的实现*/
public class ImpOval implements NetJavaShape {
public String doWork(){
String a="啦啦啦!";
return a ;
}
public void draw(int x1 ,int y1,int x2,int y2){
System.out.print("画圆形!");
//接口中的属性定义可以作为常量使用
System.out.println("出品人:"+NetJavaShape.compName);
}
public String doOther(){
String s="这是我实现OtherShape接口中的方法";
return s ;
}
public static void main(String[] args){
NetJavaShape shape=new ImpOval();
int x1=10,y1=12 ;
int x2=20,y2=20 ;
shape.draw(x1,y1,x2,y2) ;
//作为OtherShape
OtherShape os=new ImpOval() ;
OtherShape_1 os_1=new ImpOval();
System.out.println(os.doOther());
System.out.println(os_1.doWork());
}
}
package 接口;
/*形状接口的定义*/
public interface NetJavaShape extends OtherShape,OtherShape_1 {
public static final String compName="溫家顺" ;
//接口中定义的方法,
public void draw(int x1 , int y1 , int x2 ,int y2);
}
package 接口;
public interface OtherShape_1 {
String doOther() ;
String doWork() ;
}
package 接口;
public interface OtherShape {
String doOther() ;
}
3.抽象类的实现与继承
抽象类介于类和接口之间的一种特殊类。
定义的关键字:abstract class
语法格式:
public abstract class 抽象类名 extends 类或者抽象类 implements 接口,... {
//定义类中所有的属性和方法(普通方法和构造方法)
//定义接口中的常量和抽象方法。
访问修饰符 abstract 返回值数据类型 方法名(数据类型 参数名,...);
}
注意:抽象类不能实例化对象。
事件机制三部分:事件源;事件监听器方法;事件处理类
4.事件源:可以成为事件源对象的是:所有的图形界面组件对象。
你的动作发生在哪一个组件上,那么该组件对象就是事件源对象
5.事件监听器方法://动作监听器方法(输入框就是回车操作,按钮上就是鼠标单击)
addActionListener(ActionListener al);
//鼠标监听器方法
addMouseListener(MouseListener ml);
//鼠标移动监听器方法
addMouseMotionListener(MouseMotionListener mml);
//键盘监听器方法
addKeyListener(KeyListener kl);
6.事件处理类:定义类实现监听器接口。
例:
package 事件机制;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class JFrameTest {
public static void main(String[] args) {
JFrameTest jt = new JFrameTest() ;
jt.showFrame() ;
}
public void showFrame(){
JFrame jf = new JFrame() ;
jf.setTitle("界面");
//创建流式布局管理器对象
JLabel la_name=new JLabel("名字:") ;
JTextField jta_name=new JTextField(10) ;
JButton bu_login = new JButton ("登录") ;
jf.add(la_name);
jf.add(jta_name);
jf.add(bu_login);
FlowLayout f1 = new FlowLayout();
jf.setLayout(f1);
//设置窗体属性
jf.setSize(500, 400); //窗口大小
jf.setDefaultCloseOperation(3);//窗口可关闭
jf.setLocale(null); //窗口位置
//窗体可见
jf.setVisible(true);
//窗体可见
jf.setVisible(true);
//创建一个监听器对象
MyMouseListener m1 = new MyMouseListener();
//监听器加给按钮
bu_login.addActionListener((ActionListener) m1);
}
}
package 事件机制;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
public class MyMouseListener implements ActionListener {
//重写接口中的所有函数
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//得到事件源对象
Object sour = e.getSource() ;
//如果事件源是一个按钮:
if(sour instanceof JButton){
JButton bu = (JButton) sour ;
String lab = bu.getText() ;
System.out.println("按下了一个按钮"+lab);
//重新设一下按钮上的文字
//“我被按了一下!”
}
else{
System.out.println("其他组件发生的事儿!");
}
}
}