标签: interface

1705
推荐指数
22
解决办法
123万
查看次数

接口与抽象类(通用OO)

我最近接受过两次电话采访,其中我被问及接口和抽象类之间的区别.我已经解释了他能想到的每一个方面,但似乎他们在等我提一些具体的东西,我不知道它是什么.

根据我的经验,我认为以下是正确的.如果我错过了重点,请告诉我.

接口:

在接口中声明的每个单独的方法都必须在子类中实现.接口中只能存在事件,代理,属性(C#)和方法.一个类可以实现多个接口.

抽象类:

只有抽象方法必须由子类实现.Abstract类可以有实现的常规方法.Abstract类还可以在Events,Delegates,Properties和Methods旁边有类变量.由于C#中不存在多重继承,因此类只能实现一个抽象类.

  1. 毕竟,面试官想出了一个问题"如果你有一个只有抽象方法的抽象类怎么办?那么它与界面会有什么不同?" 我不知道答案,但我认为这是上面提到的继承权吗?

  2. 另一位采访者问我,如果你在界面中有一个Public变量,那么它与Abstract Class有什么不同?我坚持认为你不能在界面中有一个公共变量.我不知道他想听到什么,但他也不满意.

另见:

oop abstract-class interface

1372
推荐指数
30
解决办法
69万
查看次数

"编程到界面"是什么意思?

我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?

我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.

如果你这样做是这样的:

IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)

你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.

另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?

language-agnostic oop interface

791
推荐指数
17
解决办法
16万
查看次数

你如何在C++中声明一个接口?

如何设置代表接口的类?这只是一个抽象的基类吗?

c++ inheritance abstract-class interface pure-virtual

781
推荐指数
11
解决办法
46万
查看次数

接口与基类

我何时应该使用接口,何时应该使用基类?

如果我不想实际定义方法的基本实现,它应该始终是一个接口吗?

如果我有狗和猫类.为什么我要实现IPet而不是PetBase?我可以理解有ISheds或IBarks(IMakesNoise?)的接口,因为那些可以基于宠物放在宠物上,但我不明白哪个用于通用Pet.

language-agnostic oop static-typing interface base-class

754
推荐指数
17
解决办法
15万
查看次数

682
推荐指数
15
解决办法
105万
查看次数

C#接口.隐式实现与显式实现

在C#中隐式显式实现接口有什么区别?

什么时候应该使用隐式?什么时候应该使用显式?

是否有任何利弊和/或缺点?


Microsoft的官方指南(来自第一版框架设计指南)声明不建议使用显式实现,因为它会给代码带来意外行为.

我认为这个指南在IoC之前的时候是非常有效的,当你没有作为接口传递时.

任何人都可以触及这方面吗?

.net c# interface

615
推荐指数
10
解决办法
14万
查看次数

在Java中键入List vs type ArrayList

(1) List<?> myList = new ArrayList<?>();

(2) ArrayList<?> myList = new ArrayList<?>();
Run Code Online (Sandbox Code Playgroud)

我理解,使用(1),可以交换List接口的实现.似乎(1)通常在应用程序中使用而不管需要(我自己总是使用它).

我想知道是否有人使用(2)?

此外,经常(并且我可以得到一个例子)情况实际上需要使用(1)over(2)(即where(2)不足以对接口最佳实践等进行编码)

java interface list decoupling

537
推荐指数
11
解决办法
39万
查看次数

531
推荐指数
6
解决办法
39万
查看次数

如何确定类型是否实现了具有C#反射的接口

是否反映C#报价的方式来确定是否给予一些System.Type款型的一些接口?

public interface IMyInterface {}

public class MyType : IMyInterface {}

// should yield 'true'
typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);
Run Code Online (Sandbox Code Playgroud)

c# reflection interface

527
推荐指数
11
解决办法
20万
查看次数