当前位置: 首页 > news >正文

Android(java) 接口(interface)的简单使用

一、接口的使用和重写

同一个接口可以有多个不同的实现类,但每一个实现类都必须重写接口中所有的抽象方法。即接口不考虑这些实现类各自采用什么方式实现这些功能,但它要求所有的实现类都必须有这些功能。
1:首先定义一个计算器的接口

public interface Calculator {/** 两个数的和 int类型返回值*/int add(int a, int b);/** 两个数的差 int类型返回值*/int sub(int a, int b);/** 两个数的积 long类型返回值*/long mul(int a, int b);/** 两个数的商 float类型返回值*/float div(int a, int b);
}

2:定义一个实现该接口的类,该类可以多种(BCalculator,CCalculator,DCalculator等),接口其中一个作用是规范。

public class ACalculator implements Calculator {@Overridepublic int add(int a, int b) {return a + b;}@Overridepublic int sub(int a, int b) {return a - b;}@Overridepublic long mul(int a, int b) {return a * b;}@Overridepublic float div(int a, int b) {return (float) a / (float) b;}
}

3:调用接口
//实列话的是ACalculator,也可以实列化BCalculator,CCalculator,DCalculator等,实列化哪个调用哪个逻辑,返回哪个逻辑的结果

Calculator calculator = new ACalculator();int sum = calculator.add(11, 11);//sum ==22

接口的意义:这样写有什么好处呢?直接写逻辑不用接口不是更省事吗?是的,单人小功能开发没有问题。多人开发复杂功能这样可以标准一下协议,解耦算法和逻辑,提高多人开发的效率。

二、接口的回调问题

一般情况下主线程是不执行耗时任务的,如果遇到一些耗时任务(如网络请求,文件读写,数据库读写等等),我们会将其放入子线程中去执行,当执行完毕后,子线程再将执行结果返回给主线程。这个过程就是回调。
1:定义一个读取数据的回调接口

public interface OnReadDataCallback {/** 获取信息成功 */void onSuccess(String data);/** 获取信息失败 */void failure();
}

2:定义一个用于获取信息的任务类

public class dataService {private OnReadDataCallback callback;public dataService(OnReadDataCallback callback) {this.callback = callback;}public void getData() {// 模拟一个耗时操作Thread thread = new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(5000);// 读取成功callback.onSuccess("结果是:" + new Date());} catch (InterruptedException e) {// 读取失败callback.failure();}}});thread.start();}
}

3:回调使用

public class MainActivity extends AppCompatActivity implements OnReadDataCallback {private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//获取数据public void readData(View view) {readDataService service = new readDataService(this);service.getData();}@Overridepublic void onSuccess(String data) {//成功处理数据更新ui }@Overridepublic void failure() {//弹框提示失败}
}
http://www.xdnf.cn/news/58897.html

相关文章:

  • Kotlin安卓算法总结
  • 使用谷歌浏览器自带功能将网页转换为PDF文件
  • 人工智能在智能家居中的应用与发展
  • cgroup threaded功能例子
  • 4.21 spark和hadoop的区别与联系
  • 新能源汽车零部件功率级测试方案搭建研究
  • 【PCIE730】基于PCIe总线架构的4路10G光纤通道适配器
  • 基于XC7V690T的在轨抗单粒子翻转系统设计
  • lstc_server web api接口
  • LX3-初识是单片机
  • spark
  • 全景VR是什么?全景VR有什么热门用途?
  • K8s使用LIRA插件更新安全组交互流程
  • 适配器模式:化解接口不兼容的桥梁设计
  • 若依框架免登陆、页面全屏显示、打开新标签页(看板大屏)
  • TensorFlow深度学习实战(13)——循环神经网络详解
  • 【NLP 69、KG - BERT】
  • 如何以特殊工艺攻克超薄电路板制造难题?
  • Hibernate的组件映射
  • 管理杂谈——采石矶大捷的传奇与启示
  • AI与思维模型【72】——杠杆原理思维模型
  • 实践项目开发-hbmV4V20250407-React+Taro多端项目依赖冲突解决方案
  • AR行业应用案例与NXP架构的结合
  • Transformer框架解析:从“Attention is All You Need”到现代AI基石
  • 深度解析云计算:概念、优势与分类全览
  • 【iOS】Blocks学习
  • 一段式端到端自动驾驶:VAD:Vectorized Scene Representation for Efficient Autonomous Driving
  • 【JavaWeb后端开发03】MySQL入门
  • 【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE)
  • 【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接