接口

接口的定义

一: 接口是抽象类的一种,只包含常量和方法的定义,而没有变量跟具体方法的实现,而且其方法都是抽象方法。他的作用体现在一下几个方面:

  • (1)通过接口实现不相关类的相同行为,而无须考虑这些类之间的关系
  • (2)通过接口指明多个类需要实现的方法
  • (3)通过接口了解对象的交互界面,而无须了解对象所对应的类

二:接口的声明

[public] interface 接口名  [extends父接口名] {
  void 方法名();//接口体
}

//extends 子句与类声明的extends 子句基本相同,不同的是一个接口可有多个父类接口,用哪个逗号隔开,而一个类只能有一个父类
//在类的声明中用implements 子句来表示一个类使用某个接口,在类中可以实现接口中定义的常乐,而且必须实现接口中定义的所有方法

三:接口的理解
核心思想:在于它可以具有很多类都需要实现的功能,使用相同接口的类之间不一定有继承关系,在具体实现中实现各自的功能

四:接口回调

interface People {
    void peopleList();
}
 
class Student implements People {
    publicvoid peopleList() {
       System.out.println("I’m a student.");
    }
}
 
class Teacher implements People {
    publicvoid peopleList() {
       System.out.println("I’m a teacher.");
    }
}
 
public class Example {
    public static void main(String args[]) {
       People a; // 声明接口变量
       a = new Student(); // 实例化,接口变量中存放对象的引用
       a.peopleList(); // 接口回调
       a = new Teacher(); // 实例化,接口变量中存放对象的引用
       a.peopleList(); // 接口回调
    }
}

接口回调是指:
  可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,
  那么该接口变量就可以调用被类实现的接口的方法
  。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称  为对象功能的接口回调。

五:模板代码

//1 定义接口
private MyListener myListener;  
  
public interface MyListener {  
    //通过抽象方法的参数传递数据的  
    void getData(Response res);  
}  
  
//回调方法  
public void setOnListener(MyListener myListener) {  
    this.myListener = myListener;  
} 

//2通过接口引用为抽象方法赋值
myListener.getData(Response res); 

//3 在另一个类中的某个方法中getNetData()进行回调网络请求结果
CarGoodsFragment carGoodsFragment = CarGoodsFragment.getInstance("陈如水", 22);  
carGoodsFragment.setOnListener(this);  

流程是:
1)定义接口: 定义一个接口、定义其中的抽象方法、抽象方法含有参数(被传递的数据);
2)编写回调方法: 在定义接口的类中,编写用户回调的方法,要传递一个接口对象实例,让别的类去实现。(相当于为接口成员变量赋值)
3)为抽象方法赋值: 获取一个全局的接口成员变量,在某个事件中使用接口成员变量调用接口中的方法,并且为抽象方法中的参数赋值。(这一步可以在回调方法中实现)


在另一个页面,在合适的时机,创建此类的实例,调用类中的回调方法,为接口对象赋值this,即可实现回调。

登录模块:点击事件中的方法

private void Login() {  
    //获取用户输入的参数  
    String pwd = et_pwd.getText().toString();  
    String login_name_put = et_login_name.getText().toString();  
  
    if (login_name_put == null || "".equals(login_name_put)) {  
        ToastUtils.showShort("请输入登录帐号");  
    } else if (pwd == null || "".equals(pwd)) {  
        ToastUtils.showShort("请输入登录密码");  
    } else {  
        HashMap<String, String> paramsMap = new HashMap<>();  
        //获取请求参数  
        paramsMap.put("login_name", login_name_put);  
        paramsMap.put("pwd", pwd);  
        HashMap<String, String> dataMap = ParamsUtils.getParamsMap(paramsMap);  
          
 //调取服务器端接口(网络请求业务类)  
        LoginManager loginManager = new LoginManager();  
        loginManager.login(LoginUI.this, LoginUI.this, dataMap);  
    }  
}  

实现接口,实现接口中的抽象方法:

@Override  
public void loginSuccess(LoginEntity loginStatus) {  
    ToastUtils.showShort("登录成功");  
  
    //1,是否是第一次登录app  
    SPUtils.put(LoginUI.this, "LOGIN_STATE_FIRST", "2");  
    //2,存储获取到的SID  
    SPUtils.put(LoginUI.this, "SID", loginStatus.getSid());  
    //3,存储用户ID  
    SPUtils.put(LoginUI.this, "USER_ID", loginStatus.getId());  
    //4,保存用户的登录状态  
    SPUtils.put(LoginUI.this, "LOGIN_STATE", true);  
  
    //登录成功,直接进行页面跳转  
    startActivity(new Intent(LoginUI.this, MainUI.class));  
  
    finish();  
}  
  
@Override  
public void loginFail(String msg) {  
    loadFail(msg);  
}  

LoginManager里面的业务逻辑

public class LoginManager {  
  
    public static void login(final LoginDataListener loginDataListener, Activity activity, Map<String, String> dataMap) {  
        NetUtils.addRequest(new GsonRequest<LoginEntity>  
                (  
                        Request.Method.POST,//请求方式  
                        Constant.LOGIN,//请求地址  
                        LoginEntity.class,//返回实体类的封装  
                        dataMap,//请求参数  
                        new Response.Listener<LoginEntity>() {  
                            @Override  
                            public void onResponse(LoginEntity response) {  
                                //在这里要判断响应码  
                                if (response.isSuccess()) {  
                                    loginDataListener.loginSuccess(response);  
                                } else {  
                                    loginDataListener.loginFail(TextUtils.isEmpty(response.getMessage()) ? "获取数据失败" : response.getMessage());  
                                }  
                            }  
                        },  
                        new Response.ErrorListener() {  
                            @Override  
                            public void onErrorResponse(VolleyError error) {  
                                LogUtils.i("test", error.getMessage());  
                            }  
                        }  
                ), activity);  
    }  
  
    public interface LoginDataListener {  
        //激活成功后的数据  
        void loginSuccess(LoginEntity loginStatus);  
        void loginFail(String msg);  
    }  
} 

http://blog.csdn.net/chenrushui/article/details/52053600

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容