我知道这是一个很基本的问题,但一个面试官用一种很诡计的方式问我,我很无奈:(
我只知道一个界面的材料或理论定义,并在我工作的许多项目中实现了它。但我真的不明白这为什么有用,怎么有用。
接口方面有一点我也不懂。例如,我们使用
finally块中的conn.dispose();
。但我没有看到该类实现或继承IDisposable
接口(SQLConnection
)类,我的意思是。我想知道怎么才能直接调用方法名。同样,我不理解Dispose方法是如何工作的,因为我们需要用我们自己的实现来实现所有接口方法的函数体。那么接口是如何被接受或命名为契约的呢?这些问题一直在我的脑海中滚动,直到现在,坦白地说,我从来没有看到任何好的线索来解释我的问题,以一种我能理解的方式。
MSDN像往常一样看起来很吓人,没有一条线是清晰的(各位,好心的原谅那些从事高级开发的人,我强烈地觉得任何代码或文章都应该达到任何看到它的人的头脑,因此像许多其他人说的,MSDN没有用处)。
面试官说:
他有5个方法,他很乐意直接在类中实现,但如果你必须去抽象类或接口,你选择哪一个,为什么?我确实回答了他所有我在各种博客上看到的东西,说抽象类和接口的优点和缺点,但他并不信服,他试图理解“为什么接口”一般。“为什么抽象类”一般情况下即使我可以实现相同的方法只一次,而不会改变它。
我在网络上找不到任何地方,我可以得到一篇文章来解释我清楚的接口和它的功能。我是许多程序员中的一员,他们仍然不知道接口(我知道我使用的理论和方法),但不满足于我清楚地理解了它。
当你想要创建类似的东西时,界面是非常好的:
using System;
namespace MyInterfaceExample
{
public interface IMyLogInterface
{
//I want to have a specific method that I'll use in MyLogClass
void WriteLog();
}
public class MyClass : IMyLogInterface
{
public void WriteLog()
{
Console.Write("MyClass was Logged");
}
}
public class MyOtherClass : IMyLogInterface
{
public void WriteLog()
{
Console.Write("MyOtherClass was Logged");
Console.Write("And I Logged it different, than MyClass");
}
}
public class MyLogClass
{
//I created a WriteLog method where I can pass as a parameter any object that implements IMyLogInterface.
public static void WriteLog(IMyLogInterface myLogObject)
{
myLogObject.WriteLog(); //So I can use WriteLog here.
}
}
public class MyMainClass
{
public void DoSomething()
{
MyClass aClass = new MyClass();
MyOtherClass otherClass = new MyOtherClass();
MyLogClass.WriteLog(aClass);//MyClass can log, and have his own implementation
MyLogClass.WriteLog(otherClass); //As MyOtherClass also have his own implementation on how to log.
}
}
}
在我的示例中,我可以是编写MyLogClass
的开发人员,而其他开发人员可以创建他们的类,当他们想要记录时,他们实现接口IMyLogInterface
。就像他们问我要在MyLogClass
中使用WriteLog()
方法需要实现什么一样。他们会在界面中找到答案。
我读过很多解释接口和抽象类之间差异的文章;这些帖子特别有用:接口和抽象类之间有什么区别?接口与抽象类(通用面向对象);然而,我找不到任何具体解决我问题的答案。 上下文:今天在课堂上,我们编写了一个接口和两个实现接口的类: 我知道这是可能的,因为它有效;我的问题是它为什么有效?我知道子类与其超类有ISA关系,但接口根本不是类,那么继承仍然适用于它们吗?实现多个接口的类是否与这些接口有ISA关系? 这
(1)接口 接口使用interface修饰; 接口不能实例化; 类可以实现多个接口; ①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现; (2)抽象类 抽象类使用abstract修饰; 抽象类不能被实例化; 抽象类只能单继承; 抽象类中可以包含抽象方法和非抽象方法,非抽象
在TypeScript中,当创建.d.ts源代码声明文件时,哪个更可取,为什么? 或 我能说出的区别是接口不能有静态方法,所以你必须为此使用一个类。两者都不产生任何JS输出,所以也许没关系?
问题内容: 什么时候应该实现接口? 我们为什么要这样做? 它具有任何优势或安全性吗? 问题答案: 从这是什么“系列化”的事情怎么一回事?: 它使您可以获取一个对象或一组对象,将它们放在磁盘上或通过有线或无线传输机制发送,然后稍后,也许在另一台计算机上,逆转该过程:恢复原始对象。基本机制是将一个或多个对象展平为一维比特流,并将该比特流转换回原始对象。 就像《星际迷航》中的“运输者”一样,所有事情都是
本文向大家介绍接口和抽象类的区别是什么?相关面试题,主要包含被问及接口和抽象类的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:抽象类 Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口,但是只能继承一个抽象类 类可以不实现抽象类和接口声明的所有方法,当然,在这种情
本文向大家介绍抽象类和接口的区别是什么?相关面试题,主要包含被问及抽象类和接口的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。 构造函数:抽象类可以有构造函数;接口不能有。 实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。 访问修饰符:接口中的方法默认使用 pub