我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?
我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.
如果你这样做是这样的:
IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)
你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.
另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?
我知道他们强迫你实现方法等,但我不明白为什么你想要使用它们.任何人都可以给我一个很好的例子或解释我为什么要实现这个.
我知道一个接口没有一个正文只是一个方法定义.但什么时候应该使用接口?如果我向某人提供一组没有正文的接口,为什么他们觉得需要编写函数体?他们最好用抽象方法编写自己的抽象类.
我想当你是一个团队的一员时,使用Interfaces会更多.假设A队为某事写了一个代码,他们想看看是否调用了一个方法.使用名称getRecords(),是否完成.这将帮助B队编写提供给他们的界面的主体,B队必须保持方法名称相似,以便A队的代码运行.
只是一个想法.我可能错了.我认为Interfaces对单个开发人员没用.
谢谢大家的答案.有了你们所回复的内容,我认为当你制作像API这样的东西时,接口有更多的用处?
(在.NET的背景下,它的价值)
我倾向于不使用继承,很少使用接口.我遇到了一个认为接口是自吐以来最好的东西的人.他到处使用它们.我不明白这一点,因此接下来的问题.我只想检查一下我对接口的理解.
如果您在任何地方使用接口,我假设您可以预测未来,您的应用程序要求已经确定,并且应用程序中的任何内容都不会发生变化.对我来说,特别是在早期开发过程中,界面变得拖累.该应用程序在其生命中非常有活力.如果你需要减去或添加成员到界面,很多东西都会破坏.上面的人说他创建了另一个界面来处理新成员.什么都没有打破.
那不是那个构图吗?为什么不使用没有接口的组合?更灵活.
他如何处理必须从界面中减去成员的情况?基本上他没有.事情刚刚破裂,这很好,因为现在你可以看到所有受影响的区域并修复它们.我们应该通过暴力破解掉部分类,而不是更优雅地找出所有相关代码路径的位置?
我认为软件应用程序是一个图形.完整的图表是最坏的情况,具有n(n-1)/ 2.这意味着每个班级都与每个班级交谈.令人困惑的蜘蛛网.n-1是最好的,它们是严格的沟通等级.添加另一个接口只是为了补偿一个新的需要成员,为图形添加一个vertici,这意味着更多的边缘和更强的n(n-1)/ 2方程的实现.没有接口的组合更像是mixins.只有选择类使用特定方法.使用接口,所有类都被迫使用成员,即使他们不需要它们.组合/混合方法不会添加新的不需要的边.
我在一家公司工作,有些人要求在我们的代码中使用接口(Visual Studio C#3.5).
我想要求Iron Clad推理接口是必需的.(我的目标是证明接口是编程的正常部分.)
我不需要说服,我只需要一个好的论据来用于说服别人.
我正在寻找的那种论点是基于事实的,而不是基于比较的(即"因为.NET库使用它们"是基于比较的.)
因此,针对它们的论点是:如果一个类被正确设置(具有其公共和私有成员),那么接口只是额外的开销,因为使用该类的那些仅限于公共成员.如果您需要一个由多于一个类实现的接口,那么只需设置继承/多态.
只是好奇.NET CLR如何在内部处理接口?
Q1]当CLR遇到类似的情况时会发生什么:
简单的界面示例.(以下同样使用.)
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
public void SampleMethod()
{
// Method implementation.
}
static void Main()
{
//Declare an interface instance.
ISampleInterface mySampleIntobj = new ImplementationClass(); // (A)
// Call the member.
mySampleIntobj.SampleMethod();
// Declare an interface instance.
ImplementationClass myClassObj = new ImplementationClass(); // (B)
//Call the member.
myClassObj.SampleMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
Q2:在上面的例子中, (A)和(B)如何区分?
问题3:通用接口的处理方式是否不同?
(当问这些基本问题时,感觉就像一个菜鸟......反正....)
大家好.
Connection con = DriverManager.getConnection("jdbc:odbc:MyDataSource1");
Run Code Online (Sandbox Code Playgroud)
这是一个JDBC编程行.在这一行中,我们正在创建一个Connection接口对象.怎么可能?