职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 363|回复: 1

接口一些常用用法总结,以及在android监听中的用法

[复制链接]
yoyo 发表于 2011-8-29 09:01 | 显示全部楼层 |阅读模式
  
5进制空间,转载请注明出处,谢谢。
常用用法:回调方法接口,向上转型动态绑定,常量接口。
回调方法接口:

  
public interface ICallback {   
  public void   func();   
}   
  
public class Caller {   
  ICallback callback;   
  public void doCallback() {   
    callback.func();   
  }   
  
  public void setCallback(ICallback callback) {   
    this.callback = callback;   
  }   
  
}   
  
public class MainClass {   
  public MainClass() {   
  }   
  
  public static void main(String[] args) {   
    Caller caller = new Caller();   
    caller.setCallback(new ICallback () {   
      public void func() {   
        System.out.println("dosth");   
      }   
    });   
    caller.doCallback();   
  }   
}  

public interface ICallback {
  public void   func();
}

public class Caller {
  ICallback callback;
  public void doCallback() {
    callback.func();
  }

  public void setCallback(ICallback callback) {
    this.callback = callback;
  }

}

public class MainClass {
  public MainClass() {
  }

  public static void main(String[] args) {
    Caller caller = new Caller();
    caller.setCallback(new ICallback () {
      public void func() {
        System.out.println("dosth");
      }
    });
    caller.doCallback();
  }
}
向上转型:

  
interface People{   
void peopleList();   
}   
class Student implements People{   
public void peopleList(){   
System.out.println("I’m a student.");   
}   
}   
class Teacher implements People{   
public void 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();       //接口回调   
}   
}   
结果:   
I’m a student.   
I’m a teacher.  

interface People{
void peopleList();
}
class Student implements People{
public void peopleList(){
System.out.println("I’m a student.");
}
}
class Teacher implements People{
public void 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();       //接口回调
}
}
结果:
I’m a student.
I’m a teacher.


常量接口就不举例了。举个回调接口在 Android中的例子。
实例(对于Android界面上Button点击事件监听的模拟):
1.定义接口


  
public interface OnClickListener {   
  
    public void OnClick(Button b);   
  
}  

public interface OnClickListener {

    public void OnClick(Button b);

}  


2. 定义Button
  
public class Button {   
  
  OnClickListener listener;   
  
   public void click() {   
  
    listener.OnClick(this);   
  
   }   
  
   public void setOnClickListener(OnClickListener listener) {   
  
    this.listener = listener;   
  
  }   
  
}  

public class Button {

  OnClickListener listener;

   public void click() {

    listener.OnClick(this);

   }

   public void setOnClickListener(OnClickListener listener) {

    this.listener = listener;

  }

}
3. 将接口对象OnClickListener 赋给 Button的接口成员
  
public class MyActivity  extends Activity{   
  
      Button button = new Button();   
  
      button.setOnClickListener(new OnClickListener(){   
  
             public void OnClick(Button b) {   
  
                 System.out.println("clicked");   
  
       }      
  
    });   
  
      }   
  
}  

public class MyActivity  extends Activity{

      Button button = new Button();

      button.setOnClickListener(new OnClickListener(){

             public void OnClick(Button b) {

                 System.out.println("clicked");

       }   

    });

      }

}  
5进制空间,转载请注明出处,谢谢。

天上智喜 发表于 2011-8-29 09:02 | 显示全部楼层
这有转载价值吗?
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-27 15:32 , Processed in 0.129676 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表