美文网首页Android开发成长史
Android_开发_Day12_抽象类和接口

Android_开发_Day12_抽象类和接口

作者: 不要问我问就是百度 | 来源:发表于2019-08-12 19:03 被阅读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

    总结:

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

    相关文章

      网友评论

        本文标题:Android_开发_Day12_抽象类和接口

        本文链接:https://www.haomeiwen.com/subject/eihyjctx.html