接口常见的两种实用方式

对于一些刚学了java 接口的一些新手,在实现一些自已的监听的时候总是摸不着脑袋,其实用接口可以轻松解决很多问题。好了不废话,直接上代码。

Demo1
/**

*要用到的接口

*/
public Interface xxxListener{
 void Success();
}


 public class A{

//接口的引用
private xxxListener listener;

//给listener赋值,实例化实现类
public void setxxxListener(xxxListener listener){
this.listner=listener;
}

//进行死循环
new Thread (new Runnable(){
 while(true){

//判断listener是否为空 
   if(listener!=null){

//不为空调用Success()方法.无限的调用到达一个时刻监听的作用.
   listener.Success();
   }
 }
}).start();

}


public class B
{
//为A的对象设置监听器
new A().setxxxListener(new xxxListener(){

//匿名类中实现接口方法
    public void Success(){
     //Some logical business code 逻辑代码

   //此方法被无限次调用,知道A中的死循环停止.
   }   
});

}

好了 这是第一种比较常用的接口的使用。下面到第二种:

Demo2


/**
*
*这是用到的一个接口
*/
public interface myInterface{
   
   void Success();
}

public class A
{
/**
*  内部类
*  私有的类外部类无法使用,不暴露类A里面的信息
*  但是接口是暴露的
*/
private class M implements myInterface{
   
  public void Success(){
   //Some logical business code 
  };


}
//获取M实例的方法
public M getMInstance(){
  retrun new M();
}


}
/**

*在A中直接就实现了接口,而不是像Demo1中的在A中设置监听的方法,在B中进行监听和实现接口。

*在B中直接调用A中实现的接口方法。

*/



public class B 
{
//除了A类,其他类无法访问M类,但是可以访问M类实现的接口
 myInterface mi=(myInterface)new A().getMInstance();
//调用 M类中实现的接口方法 ,方法中的逻辑代码被运行.
 mi.Success();

}
好了 !两种接口的常用方式就结束了。
-------------------------------------------------------------------------------------------------------------------------------------

如果看到这里还没看懂的话,博主建议你把下面的代码复制到工具里面运行一遍,看懂了在来看多次以上两种接口常用方式
public class D {
/**
* @param args
*/
public static void main(String[] args) {
//得到 c类对象,但是private 修饰的类 无法被使用,因此 将类c 转换为 icface 接口 
icface f= (icface)new A().getC();
//调用此方法,接口的实现方法被调用. 
f.ic_f();

}
  
}
-------------------

这是个接口

public interface icface {
void ic_f();
}

-----------------

public class A {
//  public c mc;
   public c getC(){
// mc=new c();
return new c();
}
/**
* 经过 private 修饰 c 类 ,c类已经不可以被外部引用和访问了,c类的信息安全了
* 要访问c类 暴露出来的东西,不能直接通过 c类来访问 数据 ,要通过实现的接口 来访问
* @author Administrator
*
*/
 private class c  implements icface{
 public void f(){
 System.out.print("调用了c中的f方法");
 }
  //实现接口的抽象方法
@Override
public void ic_f() {
f();
}
  }
}

------------------------

运行结果:

Console:调用了c中的f方法 

------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值