您的位置:首页 > 编程语言 > Java开发

对于java中接口的理解

2016-06-06 18:40 302 查看

一、抽象类:

1.一般含有抽象方法。创建抽象类对象并没实际意义,所以阻止创建该类。接口由继承他的子类实现。

2.子类继承抽象类。如果父类含有抽象方法,则需要为父类的所有抽象方法提供定义,否则,则子类也是抽象类。

    抽象类也可以不含任何抽象方法,该类不能创建任何实例。

二、接口:

1.形式:

public interface JieKou{
public static final int a=1;//声明常量,public static final 一般为隐含
public abstract void jiekou();//public abstract 一般为隐含
}

public interface OnClickListener {
void onClick(View v);
}
2.使用其中的一些原因:
a、任何抽象性都有真正的需求产生。
b、需要该类不能被创建对象。

3.java中回调接口的例子:

 查找网上通俗的例子:

    某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。

代码例子:

package test;
public class HuidiaoTest {
String bookname="离散数学";

public void setStudy(StudyCallBack studyCallBack){
studyCallBack.studyMath(bookname);
}
}

interface StudyCallBack{
void studyMath(String bookname);
}

public class Test{
public static void main(String[] agrs){
HuidiaoTest huidiao=new HuidiaoTest();
huidiao.setStudy(new StudyCallBack() {
@Override
public void studyMath(String bookname) {
System.out.println(bookname);
}
});
}
}

/*
* Test程序调用HuidiaoTest中的setStudy()方法,把StudyCallBack传入。
* 然后在HuidiaoTest程序中setStudy()方法中,调用callback.studyMath(bookname),把bookname参数传进去。
* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: