接口和抽象类的应用

接口

接口的定义

接口(英文: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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容