A a = new AImpl(); (1)
AImpl a = new AImpl(); (2)
a.say();A是接口
用(1)或(2)都可以得到对象a并调用say()方法为什么需要用(1)呢··那不多余定义了一个接口A吗?·
谢谢各位··
AImpl a = new AImpl(); (2)
a.say();A是接口
用(1)或(2)都可以得到对象a并调用say()方法为什么需要用(1)呢··那不多余定义了一个接口A吗?·
谢谢各位··
解决方案 »
- action中使用@Service问题
- flickr获取图片信息的一个java测试程序 抛出了异常 有人知道怎么解决么 先谢谢了
- 第一个Struts2程序遇到问题,Error filterStart。启动服务器后出现异常,以后每次打开服务器都有异常发生,删除webapps下相应的目录后才能无异常启动服务器。
- 中途转行要从头开始
- 我把JVM玩挂啦,请大家帮忙看看,谢谢
- struts2的问题
- 访问tomcat5.0自带的admin应用时,不知是何原因,报如下错误:
- 使用struts标签获取request 里面 bean属性的问题
- 很土的一问,关于sessionbean及jsp中的session
- 100分求助使用axis开发web services的问题
- spring mvc映射默认路径
- org/apache/catalina/startup/Bootstrap failed
如果A的实现类只有AImpl一个,那显然显得是多余了
假设你是雇主、招很多人,你只需要告诉他们干什么、要什么结果就可以了,不需要知道他们是如果干的。
程序也是一样、不需要知道实现、只需要知道接口中的方法就好了。
还有就像电脑的usb接口一样,同样的接口可以插鼠标、键盘、硬盘、摄像头
就好比“鼠标、键盘、硬盘、摄像头”都是这个A接口的实现类
public void say() ;
}
public class A1Impl implements A{
public void say(){
}
}public class A2Impl implements A{
public void say(){
}
}public class A3Impl implements A{
public void say(){
}
}
import java.util.List ;
import java.util.ArrayList ;
public class Test { public static void main(String[] args){
List list = new ArrayList() ;
list.add(new A1Impl()) ;
list.add(new A3Impl()) ;
list.add(new A2Impl()) ;
list.add(new A3Impl()) ;
A a ;
for (int i = 0; i < list.size(); i++){
a = (A)list.get(i) ; //不管是哪个实现类 ,统一转换为接口A
a.say() ;
}
}
}