Chinaunix
标题:
不知道什么时候可以写接口?请指教
[打印本页]
作者:
Racsinto
时间:
2004-02-19 09:01
标题:
不知道什么时候可以写接口?请指教
先定义一个接口
public interface Command
{
public abstract void execute ( );
}
然后再定义三个类实现这个接口:
public class Engineer implements Command {
public void execute( ) {
//do Engineer's command
}
}
public class Programmer implements Command {
public void execute( ) {
//do programmer's command
}
}
public class Politician implements Command {
public void execute( ) {
//do Politician's command
}
}
这样做有什么意义吗?我也可以在三个类中写三个方法来完成我想要做的事情。不一定非要实现接口,这样做可不可以?请大家说说。
作者:
eudemon
时间:
2004-02-19 10:34
标题:
不知道什么时候可以写接口?请指教
看看23种设计模式中创建型模式。
作者:
Racsinto
时间:
2004-02-19 10:57
标题:
不知道什么时候可以写接口?请指教
我看了一下,还是不能领会。能不能帮我概括和提示一下。
接口里面是没有具体的实现的,
好象接口的存在就是为了体现面向对象的关系
比如: 会报警的门 something extends "门" implements "报警"
如果写成: public class 报警门
{
.......
}
可不可以?
麻烦大家指点一下,我困扰死了。
作者:
sakulagi
时间:
2004-02-20 08:31
标题:
不知道什么时候可以写接口?请指教
是可以,接口主要是为了抽象出共同的行为的。
比如有个类
class 工商局安全科{
public int 检查有报警功能的产品(。。。){
//kajfajfjafjadjfsa
}
public int 检查所有的门禁类产品(){
}
}
你觉得第一个函数的参数怎么写?
是不是应该有个"Interface 报警",然后所有能报警的产品都继承这个接口?
作者:
Racsinto
时间:
2004-02-20 09:10
标题:
不知道什么时候可以写接口?请指教
谢谢 sakulagi,
“然后所有能报警的产品都继承这个接口”,这个我可以理解。因为在程序结构上可以体现对象之间的关系。然后接口仅仅是为了体现关系而存在的吗?毕竟继承了接口之后,所有能报警的产品的类中还是要需要写不同实现报警的方法的。
所以我想问:
这样做了之后在代码重用方面能带来什么样的便利
作者:
sakulagi
时间:
2004-02-20 09:22
标题:
不知道什么时候可以写接口?请指教
使用接口的直接后果是
public int 检查有报警功能的产品(。。。){
复制代码
可以在以后很容易复用,而不是实现这个接口的类有多大的复用性的问题(个人看法,不一定对)
作者:
sakulagi
时间:
2004-02-20 09:25
标题:
不知道什么时候可以写接口?请指教
实际上也是一个decoupling 的过程,这样操作实现这个接口的所有的类的对象的时候,使用者和被使用着之间是一个contract,而不关心对方的实现细节。
作者:
Racsinto
时间:
2004-02-20 10:45
标题:
不知道什么时候可以写接口?请指教
那么好象这样在几个人的开发中,可以提高标准化程度。并且也容易体现出对象之间的关系。
再问一句:
这样写 interface Something extends Otherthing
{
.......
}
可不可以?
作者:
sakulagi
时间:
2004-02-20 12:51
标题:
不知道什么时候可以写接口?请指教
可以。
作者:
Racsinto
时间:
2004-02-20 13:06
标题:
不知道什么时候可以写接口?请指教
麻烦sakulagi ,你可不可以给我一个这样的例子。让我看看一般在哪里应用到interface Something extends Otherthing
{
.......
}
或者跟我说一下这样做有什么意义?
作者:
sakulagi
时间:
2004-02-20 20:21
标题:
不知道什么时候可以写接口?请指教
java.util.List extends java.util.Collection
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2