Android开发学习---Interface的使用

前言:接口是什么?

   接口是一种没有继承关系的特殊抽象类。抽象类强调子类相同属性的规范,保证所有子类都有相同的接口实现;接口则主要强调子类要实现的方法。

接口的用法(一):实现某种功能

  在日常生活中,晚上冲浪是习以为常的一件事情。我们可以使用手机进行网上冲浪,也可以使用电脑进行网上冲个浪。因此,定义一个网上冲浪的抽象接口 ISurfing

public interface ISurfing{
    //冲浪
    void surf(); 
}

   new 一台普通的电脑实现冲浪接口。

public Computer implements ISurfing{

   @Override
   void surf() {
	      System.out.println("使用电脑网上冲浪");
      } 
}

使用:

public class Test {
    public static void main(String[] args) {
        //方法一:常规使用
        Computer computerA = new Computer();
        computerA.surf();
        //方法二:多态
        //不用在乎里面的实现细节,能上网的手机、电脑等等都可以。
        ISurfing surfDevice = new Computer();
        surfDevice.surf();
    }
}

接口的用法(二):实现多种功能(多实现)

  单个类无法多继承,但我们可以使用实现多个接口的方式实现“多继承”效果。例子:笔记本电脑不仅能网上冲浪、还能视频剪辑。因此,定义两个接口:1.网上冲浪 ISurfing 2.剪辑视频 IEdit

public interface ISurfing{
    //冲浪
    void surf(); 
}
public interface IEdit{
    //剪辑
    void edit(); 
}

   老规矩,new 一台普通的电脑实现冲浪和视频剪辑接口。

public Computer implements ISurfing,IEdit{

   @Override
   void surf() {
	      System.out.println("使用电脑网上冲浪");
      } 
      
    @Override
    void edit() {
	      System.out.println("使用电脑剪辑视频");
      } 
}

使用:

public class Test {
    public static void main(String[] args) {
        
        Computer computerA = new Computer();
        computerA.surf();
        computerA.edit();
    }
}

接口的用法(三):用于回调

使用情景:当我们需要调用某些方法进行延时操作并需要在操作结束后返回结果(例如:下载文件等)。接下来举一个简单的例子方便大家理解Interface的用法。

情景:你在上课,但是你的快递到了。此时你打电话告诉你舍友并希望如果他在拿到快递后立马告诉你结果。

代码如下:

1.定义接口 onTakeExpressCallback
public interface onTakeExpressCallback {
    void success(String message);
    void failed(String message);
}
2.定义舍友这个类,里面提供拿快递的方法
public class Roomate {

    String name;

    public Roomate(String name) {
        this.name = name;
    }

    //拿快递方法
    public void TakeExpress(onTakeExpressCallback onTakeExpressCallback) {
        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
            @Override
            public void run() {
                onTakeExpressCallback.success("好兄弟,"+ name +"帮你搞定了!");
            }
        }, 3000);

    }
}
3.在Activity中实现 onTakeExpressCallback接口
public class MainActivity extends AppCompatActivity implements onTakeExpressCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AskForHelp();
    }

    @Override
    public void success(String message) {
        Log.d("MYZ", "message:"+message);
    }

    @Override
    public void failed(String message) {
        Log.d("MYZ", "message:"+message);
    }

    public void AskForHelp() {
        Roomate roomate = new Roomate("雷锋同志");
        roomate.TakeExpress(this);
    }
}

然后就可以通过接口提供的方法获取得到执行TakeExpress后的返回值。(成功或失败)

4.程序运行完毕结果如下:

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值