Android开发成长史

Android_开发_Day12_抽象类和接口

2019-08-12  本文已影响0人  不要问我问就是百度

Android_开发Day12抽象类和接口

目的:

知道什么是抽象类,什么是接口,学会抽象类的使用,与接口的使用。

技术:

<1> 抽象类:抽象类也是一个类,但是该类有些特殊,它不提供方法的具体实现,而是提供一个模板,方法的具体实现是在它的子类中去实现的。

<2> 接口:定义一套方法,用与对象之间的通信。例如:你要到日本旅游,但是你不会说日语,他也不会说中文,因此你们想交 流就只能用英语,这里的英语就是接口。接口用interface开头,并且里面不能定义变量,只能定义常量,不能定义代码块和构造方法。接口里面不能添加普通方法,只有抽象方法。在接口里面定义方法时默认是public abstract的。如果非要定义已实现的方法使用default。接口里面的可以定义内部类,默认是public static。使用implements来实现接口。一个类只能继承一个父类,但一个接口可以被多个类实现。一个接口可以继承多个接口。接口之间也能实现多态。

技术如何使用:

我们可以模拟一下系统的ui控件以解决这个问题,因此首先我们需要一个界面,然后在界面上添加一些ui控件,比如button,picture等,因此该程序中用到的类有Button类和ImageView类,但是这两个类都有相同的东西,因此我们需要将这连个类继承于同一个类View,同理,在界面那一块,界面也分很多种,因此我们需要一个界面类MainActivity,同时又有该类继承于父类Activity,所以这样我们就可以写相应的代码了。

public abstract class Activity {
    //
    public ArrayList<View> ui = new ArrayList<>();
    //
    public abstract void onCreat();
    
    public abstract void onDestory();
   
    //将子控件添加到界面
    public void addChild(View v){
        if (v instanceof Button){
            Button btn = (Button)v;
            System.out.println(btn.title+"按钮被添加到界面上了");

        }
        if (v instanceof ImageView){
            ImageView iv = (ImageView)v;
            System.out.println(iv.picture+"图片显示到界面上了");
        }
        ui.add(v);
    }
}

Activity类是一个抽象类

public class View {
    String background;
    String frameColor;
    
    //记录谁像监听,暂时不知道
    OnClickListener listener;

    //定义内部接口
    public interface OnClickListener{
        //定义一套方法约束外部
         void onClick(View v);
    }
    public void getTouchEvent(){
        listener.onClick(this);
    }
}

View类定义了一个内部接口

public class Button extends View{
    String title;
    String fontColor;
    public Button(String title,String fontColor){
        this.title = title;
        this.fontColor = fontColor;
    }
}

Button类

public class ImageView extends View{
    String picture;
    public ImageView(String picture){
        this.picture = picture;
    }
}

ImageView类

public class MainActivity extends Activity implements View.OnClickListener{
    Button btn;
    ImageView img;
    public MainActivity(){
        onCreat();
    }
    @Override
    public void onCreat() {
        btn = new Button("分享","红色");
        img = new ImageView("御坂");
        addChild(btn);
        addChild(img);

        //如果一个控件需要监听事件,那么就需要
        btn.listener = this;//告诉按钮是谁要监听事件
        //给图片添加一个事件
        img.listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("图片被点击了");
            }
        };
    }

    public void touch(){
        btn.getTouchEvent();
        img.getTouchEvent();
    }
    @Override
    public void onDestory() {

    }

    @Override
    public void onClick(View v) {
        System.out.println("按钮被点击了");
    }
}

MainActivity类,是整个程序的核心。
接下来就是main函数的内容:

public class TestClass {
    public static void main(String[] args){
        MainActivity main = new MainActivity();
        main.touch();
    }
}

可以看见main函数的内容很少,主要的代码都到类当中去了。用touch方法来模拟点击事件。

实际使用效果:

批注 2019-08-12 185415.jpg

总结:

接口是可以沟通两个类的,通过一个类调用另一个类,再通过另一个类的接口回调这个类,就完成了一次交流,这个和现实中的人与人之间的沟通交流是一样的,你想我传话,我收到后会返回一句话给你。

上一篇下一篇

猜你喜欢

热点阅读