Android interface(接口)详解

Android interface(接口)详解

什么是接口

可以理解成一种特殊的类,由常量和抽象方法组成的特殊类; 接口不可以实例化;接口中的方法没有方法体;继承接口的类一定要实现接口中定义的方法。
例:

public interface InterfaceDemo {
    int i = 10;            //常量
    void method1();        //方法(没有方法体)
    int method2();         //方法(没有方法体)
}

接口的使用场景

  1. 多重继承
    Java本身是不支持类的多重继承(多重继承是指一个类从多个类继承而来,即一个类拥有多个超类)
    但一个类却可以实现多个接口,我们可以将一些抽象方法定义在接口中,使用继承多个接口的方法间接地达到多重继承的目的
    例:
//第一个接口
public interface MyInterface1 {
    void fly();
}
//第二个接口
public interface MyInterface2 {
    void walk();
}
public class Bird implements MyInterface1, MyInterface2 {   //通过implements关键字继承上述两个接口,多个接口用“,”分隔
    private static final String TAG = "Bird";
    @Override                     // 实现接口MyInterface1中的fly()方法
    public void fly() {
        Log.i(TAG, "I can fly");  // 可根据需求完成自己的方法体
    }

    @Override
    public void walk() {          // 实现接口MyInterface2中的walk()方法
        Log.i(TAG, "I can walk"); // 可根据需求完成自己的方法体
    }
}
  1. 定义一个规范
    同一个接口可以有多个不同的实现类,但每一个实现类都必须重写接口中所有的抽象方法。
    即接口不考虑这些实现类各自采用什么方式实现这些功能,但它要求所有的实现类都必须有这些功能。
    例:
//定义一个计算器接口
public interface Calculator {
    /** 计算器可以计算两个数的和 */
    int add(int a, int b);
    /** 计算器可以计算两个数的差 */
    int sub(int a, int b);
    /** 计算器可以计算两个数的积 */
    long mul(int a, int b);
    /** 计算器可以计算两个数的商 */
    float div(int a, int b);
}
//该类实现了计算器接口,并填充了具体实现方法
public class ACalculator implements Calculator {
    @Override
    public int add(int a, int b) {         //实现接口
        return a + b;                      //具体实现方法
    }

    @Override
    public int sub(int a, int b) {         //实现接口
        return a - b;                      //具体实现方法
    }

    @Override
    public long mul(int a, int b) {        //实现接口
        return a * b;                      //具体实现方法
    }

    @Override
    public float div(int a, int b) {       //实现接口
        return (float) a / (float) b;      //具体实现方法
    }
}
//这个类中使用ACalculator中的方法。这里并不需要了解ACalculator是通过什么方式计算的,只需要了解Calculator接口中的相关方法定义即可。 
Test.java
Test.java
public class Test {
    public static void main(String[] args) {
        Calculator calculator = new ACalcuAlator();  //接口赋值(ACalcuAlator类中已经实现了Calculator接口)
        int sum = calculator.add(12, 14);            //相当于调用ACalcuAlator中的add()方法
        System.out.println("sum = " + sum);
    }
}
  1. 回调
    回调就是把方法的定义和功能实现分开的一种机制
    例:
//定义一个接口
public interface OnListener {
         public void onClick(String msg);
  }
class Test {
    private OnListener onListener ;       //定义一个的接口类型的变量存储数据
    
    //在合适的位置调用接口里面的方法,传递数据
    public void callBack(string msg) {
        if (onListener != null) {
            onListener .onClick(msg);
        }
    }
    //创建一个公共的方法,让外部调用,并且传递接口类型的参数,给其定义的接口类型的数据初始化
    public void setOnListener(OnListener onListener) {
        this.onListener= onListener;
    }
}
public  class  Activity {
    Test test;
test.setOnListener(new Test.OnListener () {
               @Override
               public void onClick(msg) {
                     //使用传回的值
               }
        });
}

接口的实现写法

//定义接口
public interface OnKeyValueListener {

    void  getKeyValueClick(String value);
}
public class MyButton {
    public MyButton(Context context) {
    }
    private OnKeyValueListener mOnkeyValueListener; //声明OnKeyValueListener接口对象

    //接口中的方法赋值(传递需要的数据)
    public void doClick() {
       if (mOnkeyValueListener!= null) {
        mOnkeyValueListener.getKeyValueClick("点击了A");
        }
    }

    public void setmOnkeyValueListener(OnKeyValueListener mOnkeyValueListener) {
        this.mOnkeyValueListener = mOnkeyValueListener; //MainActivity 类中调用该方法,传入监听对象
    }
}
  1. implements形式
public class MainActivity extends Activity implements OnKeyValueListener{

    MyButton myButton ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myButton = new MyButton(MainActivity.this);
        myButton.setmOnkeyValueListener(this); //传递监听对象到A类
        myButton.doClick(); //这里是调用A类中的方法,接受到A类传入的内容
    }

    @Override
    public void getKeyValueClick(String value) {
        Log.d("MyLog","######## value = "+value); //打印获取到的内容
    }
}
  1. 内部类形式
public class MainActivity extends Activity{

    MyButton myButton ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myButton.setmOnkeyValueListener(new MyButton.OnKeyValueListener () {
               @Override
               public void getKeyValueClick(String value) {
                     Log.d("MyLog","######## value = "+value); //打印获取到的内容
               }
        });
}
  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Android底层接口与驱动开发技术是指在Android操作系统中,为了使用硬件设备而开发的接口和驱动程序。 在Android系统中,底层接口用于实现与硬件设备之间的通信和交互。底层接口包括HAL(Hardware Abstraction Layer,硬件抽象层)和JNI(Java Native Interface,Java本地接口)。HAL负责抽象化硬件设备的功能,并提供统一的接口供上层框架和应用程序调用。JNI则提供了一种机制,使得Java代码可以与底层C/C++代码进行交互。 而驱动开发技术是指开发与特定硬件设备相关的驱动程序。驱动程序是一个软件模块,它负责处理硬件设备的通信和控制,使得操作系统和上层应用程序能够与硬件设备进行交互。在Android系统中,驱动程序通常以模块的形式存在,被加载到内核中。驱动程序需要与硬件设备之间进行交互,通过底层接口提供的函数和接口来完成数据的传输和控制。 在Android底层接口与驱动开发的过程中,需要对硬件设备的功能和特性进行了解和研究,并根据设备的规格和文档进行开发和调试。开发者需要熟悉底层接口和驱动程序的编程技术,掌握C/C++语言以及底层接口的使用方法。同时还需要了解Android系统的架构和内核机制,以便于将驱动程序正确地集成到系统中。 总之,Android底层接口与驱动开发技术是开发与硬件设备相关的接口和驱动程序的技术,它们是实现Android系统与硬件设备之间通信和交互的重要组成部分,需要开发者具备深入的硬件和系统知识,以及相关的编程技术。 ### 回答2: Android底层接口与驱动开发技术是指在Android系统中通过编写底层接口和驱动程序,与硬件进行交互的一种开发技术。 首先,Android底层接口是指在Android系统中与硬件进行交互的接口Android系统提供了一套接口,用于与底层硬件设备进行通信,如传感器、摄像头、WiFi、蓝牙等。开发者可以通过使用这些接口,实现与硬件的交互功能。 其次,Android驱动开发技术是指在Android系统中编写驱动程序,使得Android系统能够正确地识别并使用硬件设备。Android系统支持多种硬件设备,如显示器、触摸屏、键盘等,每种设备都需要相应的驱动程序才能正常工作。开发者可以使用C/C++等编程语言编写驱动程序,然后将其编译为可执行文件,将其加载到Android系统中,使系统能够正确地识别和使用硬件设备。 在Android底层接口与驱动开发技术中,开发者需要了解Linux内核和Android系统的架构,并熟悉C/C++编程语言。通过理解Android系统的硬件抽象层(HAL)和设备树(Device Tree)机制,开发者可以编写底层接口和驱动程序,实现与硬件的交互。 总而言之,Android底层接口与驱动开发技术是一项与硬件设备进行交互的开发技术。通过编写底层接口和驱动程序,开发者可以实现Android系统与硬件设备的正常通信和使用。这对于Android系统的定制化开发和移植到特定硬件平台上非常重要。 ### 回答3: Android的底层接口与驱动开发技术是指在Android操作系统中,开发人员可以使用底层接口和驱动程序编写代码,以实现底层硬件的访问与控制。 首先,Android底层接口是指Android操作系统提供的一系列接口,开发人员可以通过这些接口与底层硬件进行交互。例如,开发人员可以使用底层接口来控制手机的摄像头、传感器、蓝牙模块等硬件设备,并获取相应的数据。 其次,驱动开发技术是指开发人员可以编写底层驱动程序,将硬件设备与Android操作系统连接起来。通过编写驱动程序,Android系统可以识别并正确操作各种硬件设备。驱动程序的开发需要对硬件设备的底层工作原理有一定了解,并使用相应的编程技术来实现与硬件设备的通信。 在Android底层接口与驱动开发技术中,需要掌握Linux内核的相关知识,因为Android操作系统基于Linux内核开发。了解Linux内核可以帮助开发人员理解Android底层接口的实现方式和驱动程序的运行机制。 另外,掌握C/C++等底层编程语言也是必要的,因为底层接口和驱动程序通常使用这些语言进行编写。熟练掌握编程语言可以更好地实现对底层硬件的控制和访问。 总之,Android底层接口与驱动开发技术对于开发人员来说是一项重要的技能。掌握这些技术可以使开发人员更好地理解和利用Android操作系统的底层功能,从而实现更加高效和优质的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值