接口对象的实例化在接口回调中的使用方法

所属分类: 软件编程 / Android 阅读数: 29
收藏 0 赞 0 分享

首先澄清一个问题,就是接口不仅可以声明对象,而且可以把对象实例化!作用见下文。

接口回调:可以把实现某一接口类创建的对象的引用赋给该接口声明的接口变量,那么该

接口变量就可以调用被类实现的接口中的方法。实际上,当接口变量调用被类实现的接口

中的方法时,就是通知相应的对象调用接口方法。

我们看下面的例子:

interface Computerable 
 
{ 
 
public double area(); 
 
} 
 
 
 
class Rec implements Computerable 
 
{ 
 
double a,b; 
 
Rec(double a,double b) 
 
{ 
 
this.a = a; 
 
this.b = b; 
 
} 
 
public double area() { 
 
return (a*b); 
 
} 
 
} 
 
 
 
class Circle implements Computerable 
 
{ 
 
double r; 
 
Circle(double r) 
 
{ 
 
this.r = r; 
 
} 
 
public double area() { 
 
return (3.14*r*r); 
 
} 
 
} 
 
 
 
class Volume 
 
{ 
 
Computerable bottom; 
 
double h; 
 
Volume(Computerable bottom, double h) 
 
{ 
 
this.bottom = bottom; 
 
this.h = h; 
 
} 
 
 
 
public void changeBottome(Computerable bottom) 
 
{ 
 
this.bottom = bottom; 
 
} 
 
 
 
public double volume() 
 
{ 
 
return (this.bottom.area()*h/3.0); 
 
} 
 
} 
 
 
 
public class InterfaceRecall { 
 
public static void main(String[] args) 
 
{ 
 
Volume v = null; 
 
Computerable bottom = null; 
 
 
 
//借口变量中存放着对对象中实现了该接口的方法的引用 
 
bottom = new Rec(3,6); 
 
System.out.println("矩形的面积是:"+bottom.area()); 
 
v = new Volume(bottom, 10); 
 
//体积类实例的volum方法实际上计算的是矩形的体积,下同 
 
System.out.println("棱柱的体积是:"+v.volume()); 
 
 
 
bottom = new Circle(5); 
 
System.out.println("圆的面积是:"+bottom.area()); 
 
v.changeBottome(bottom); 
 
System.out.println("圆柱的体积是:"+v.volume()); 
 
 
 
} 
 
}

输出:

矩形的面积是:18.0

棱柱的体积是:60.0

圆的面积是:78.5

圆柱的体积是:261.6666666666667

通过上面的例子,我们不难看出,接口对象的实例化实际上是一个接口对象作为一个引用 ,指向实现了它方法的那个类中的所有方法,这一点非常象C++中的函数指针,但是却是有区别的。java中的接口对象实例化实际上是一对多(如果Computerable还有其他方法,bottom仍然可以调用)的,而C++中的函数指针是一对一的。 但是需要注意的是,接口对象的实例化必须用实现它的类来实例化,而不能用接口本身实例化。用接口本身实例化它自己的对象在Java中是不允许的。

以上这篇接口对象的实例化在接口回调中的使用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

android byte[] 和short[]转换的方法代码

这篇文章主要介绍了android byte[] 和short[]转换的方法代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取应用程序大小的方法

这篇文章主要介绍了Android获取应用程序大小的方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android获取其他包的Context实例代码

这篇文章主要介绍了Android获取其他包的Context实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android放大镜的实现代码

这篇文章主要介绍了Android放大镜的实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android 读取Properties配置文件的小例子

这篇文章主要介绍了Android 读取Properties配置文件的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

Android通讯录开发之删除功能的实现方法

这篇文章主要介绍了Android通讯录开发之删除功能的实现方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享
查看更多