接口的使用问题 这样写有错误吗?????????????????? c#

hackztx 2008-07-07 08:56:45
 interface IQA
{
bool AutoASK(string strTitle, string strContent, CookieContainer cc);
bool AutoFeedback(string strContent, string strCKZL, CookieContainer cc, string strUrl);
bool AutoFeedback(string strContent, string strCKZL, CookieContainer cc, int questionID);
bool AutoTranQuestion(string strUrl,string bestName,CookieContainer cc);
int GetQuestionID(string strUrl);
}

interface IBaidu : IQA
{

}

interface IASK : IQA
{
new bool AutoTranQuestion(string strUrl, string strBestname, CookieContainer cc, Fenlei fenlei);


new bool AutoTranQuestion(string strUrl, string strBestname, CookieContainer cc, Fenlei fenlei, Star star);

}
...全文
216 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxmonsy 2008-07-07
  • 打赏
  • 举报
回复
好象这里不用NEW了.
  • 打赏
  • 举报
回复
new 的目的是显式隐藏基类中的方法,而你的IASK 接口的AutoTranQuestion方法的参数已经不同,已经通过重载表现了,不必使用new 了。
我姓区不姓区 2008-07-07
  • 打赏
  • 举报
回复
你加new的目的是什么呢?IAsk中的AutoTranQuestion函数签名与IQA中的不一样,用new根本不能隐藏方法,如果是要提供AutoTranQuestion的多个重载版本,不需要new啊
Magic_YJL 2008-07-07
  • 打赏
  • 举报
回复
楼上都说了,也就不说什么了,加个new毫无意义
yagebu1983 2008-07-07
  • 打赏
  • 举报
回复
没有new的!!!
hzfujiomo 2008-07-07
  • 打赏
  • 举报
回复
up
greenery 2008-07-07
  • 打赏
  • 举报
回复
1 你IASK 的 AutoTranQuestion 与 IQA的参数不一样,你不需要考虑覆盖原来那个函数。new 要删除
2 接口的函数默认就是公共的,public 不用写
3 就算你 IASK 的 AutoTranQuestion 与 IQA的参数,你也不需要写new,实现的时候,但是你实现时,需要指明接口。
class A : IASK
{
IASK.AutoTranQuestion (){。。。。}
IQA.AutoTranQuestion (){。。。。}
}
家鸣 2008-07-07
  • 打赏
  • 举报
回复
把接口改成抽象类,这样可以规定那些方法子类一定要实现, 那些方法可以子类可不实现。
hackztx 2008-07-07
  • 打赏
  • 举报
回复
的确这样可行。但是这样的话我得针对每个问答系统都 copy一份大致相同的接口。。。那么这。。。。。。。。。。
caicai_45 2008-07-07
  • 打赏
  • 举报
回复
你自己写不同的类,实现你定义的同一个接口就可以了。

没有必要定义那么多的接口。
hackztx 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xhan2000 的回复:]
程序写法没问题

接口编程在面向对象方面比较有用

但是使用不当会让程序变得复杂,不容易修改
[/Quote]

怎么样合理运用接口呢?
wufan110 2008-07-07
  • 打赏
  • 举报
回复
函数要不要声明成PUBLIC
wangying110166 2008-07-07
  • 打赏
  • 举报
回复
IASK 中的new去掉。
xhan2000 2008-07-07
  • 打赏
  • 举报
回复
程序写法没问题

接口编程在面向对象方面比较有用

但是使用不当会让程序变得复杂,不容易修改
ioricool 2008-07-07
  • 打赏
  • 举报
回复
请使用观察者模式!
烈火焚身 2008-07-07
  • 打赏
  • 举报
回复
友情up
hackztx 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caicai_45 的回复:]
接口本来就是抽象的,没有new不new的,只是定义了一个方法签名。

而且接口继承的话,一般是有新的方法添加进来,才会用接口继承。

你这样继承接口,实际意义不大,是为了面向对象而面向对象。
[/Quote]

我打算写一个iask,baidu.yahoo知识堂的自动处理问题程序。。。可能发现了其他的qa问答系统。。我就是又写一个。。。。所以就写了一个他们必须实现的方法的一个定义!这样看起来好一些!目前正在弄接口。不是很熟悉!
caicai_45 2008-07-07
  • 打赏
  • 举报
回复
接口本来就是抽象的,没有new不new的,只是定义了一个方法签名。

而且接口继承的话,一般是有新的方法添加进来,才会用接口继承。

你这样继承接口,实际意义不大,是为了面向对象而面向对象。
zhchg6666 2008-07-07
  • 打赏
  • 举报
回复
把2个new去掉
kbryant 2008-07-07
  • 打赏
  • 举报
回复
友情up
加载更多回复(6)

110,825

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧