接口
接口的定义
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口的特性
1.接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
2.接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
3.接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
4.接口里不能定义 代码块 和 构造方法 。一个类可以实现多个接口(每个接口之间用逗号隔开)。接口可以继承其他接口并且可以继承多个接口
如何声明接口
接口的声明语法格式如下:
interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
匿名类
匿名类的定义
匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也就是其他地方就不能引用,不能实例化,只用一次,当然也就不能有构造器。
匿名类的代码格式
new父类(){子类内容};
代码实例
img.listener=new view.onClickListener() {
@Override
public void onClick(view v) {
System.out.println("图片被点击了");
}
};
具体应用
使用接口和抽象类来模拟屏幕点击后的反应
主类
public class myClass {
public static void main(String[] args)
{
charge main=new charge();
main.touch();
}
}
管理界面
package Day7;
public class charge extends Activity implements view.onClickListener{
public charge()
{
oncreat();
}
newButton btn;
ImageView img;
@Override
public void oncreat() {
//主界面如何布局
//按钮
btn=new newButton("分享","红色");
//图片
img=new ImageView("千户 尤莉");
//将控件添加到本页面
addChild(btn);
addChild(img);
//如果一个事物要监听
//1
btn.listener=this;
// 2
//给imageView添加一个事件
//使用的是匿名类,onClick方法已被重写
img.listener=new view.onClickListener() {
@Override
public void onClick(view v) {
System.out.println("图片被点击了");
}
};
}
//模拟触摸
public void touch()
{
//将屏幕触摸的事件传递给按钮
btn.getTouchEvent();
img.getTouchEvent();
}
@Override
public void desdroy() {
// 关闭前需要做什么
}
//当事件触发就会调用这个方法
@Override
public void onClick(view v) {
System.out.println("按钮被点击");
}
}
生成界面
package Day7;
import java.util.ArrayList;
public abstract class Activity {
ArrayList<view> charge=new ArrayList<>();
//创建界面
public abstract void oncreat();
//关闭界面
public abstract void desdroy();
//将子控件添加在主页面
public void addChild(view v )
{
if (v instanceof newButton)
{
newButton btn=(newButton)v;
System.out.println(btn.title+"按钮显示到界面");
}
if (v instanceof ImageView)
{
ImageView btn=(ImageView)v;
System.out.println(btn.picture+"按钮显示到界面");
}
//保存子控件
charge.add(v);
}
}
监听反应
package Day7;
public class view {
String backgroundcolor;
String borderColor;
//记录是谁想监听这个事件
//
//想要监听的人一定实现了该接口
onClickListener listener;
//定义内部接口 封装
public interface onClickListener
{
//定义一套方法 约束外部使用这些方法来监听事件
void onClick(view v );
}
//图片或按钮被点击时就会调用这个方法
public void getTouchEvent()
{
//调用监听者里的onClick方法
listener.onClick(this);
}
}
按钮类
package Day7;
public class newButton extends view{
String title;
String titeColor;
public newButton(String title,String titeColor)
{
this.titeColor=titeColor;
this.title=title;
}
}
图像类
package Day7;
public class ImageView extends view {
String picture;
public ImageView(String picture)
{
this.picture=picture;
}
}
运行结果

图片.png