我目前正在研究C#书的继承章节。我无法理解以下内容。
接口使您能够将对象的定义与其实现分开,以便对象可以在没有风险的情况下进化 在现有应用程序中引入不兼容性。
任何人都可以通过示例帮助我理解这一行文字的含义吗?
答案 0 :(得分:0)
好吧,我不确定我是否完全同意这条线 - 毕竟,你仍然在实施中添加了一个错误 - 但重点是抽象;如果您只知道IAnimal
有Speak()
方法,则无需了解Dog
,Cat
等;并且你不需要知道有人为Dog
,DogFacade
等交换LazyLoadedDog
。只要他们给你的东西是IAnimal
,你就会很高兴 - 并且不需要更改下游代码。
(如果Dog
类想要公开Bark()
方法,那么这很好;它可以Speak
作为显式实现 IAnimal.Speak
)
答案 1 :(得分:0)
这意味着Interfaces允许您定义一组事物的基本功能。他们如何履行这些职能留给了事物本身。例如,一个人可以走路,但男性,女性,老人,孩子等走路的方式不同,但我们可以说他们都走路了。
因此,接口是一组放在一起的函数,可以由不同的类以不同的方式实现。
答案 2 :(得分:0)
Interfaces enable you to separate the definition of objects from
their implementation
在这种情况下,对象的定义是指对象的公开部分。
在下面的示例中,它引用了公共属性Name / Age
和公共方法Insert
和Update
。
在下面的类中,Person的定义及其实现(用于实现属性和方法的代码)是相同的,即Person类。
Class Person
{
private string _name; //private fields
private string _age; //private fields
public Name {get {....} set {.....}} //public properties
public Age {get {....} set {.....}} //public properties
public void Insert() {.......} //public methods
public void Update() {.......} //public methods
}
注意:“........”表示在调用这些属性/方法时将调用的实际代码,即它们的实现。
现在,如果我要为此创建一个名为
的界面Interface IPerson
{
public Name get; set; //public properties
public Age get; set; //public properties
public void Insert(); //public methods
public void Update(); //public methods
}
然后执行Class Person : IPerson
那么我所做的就是我现在将定义IPerson
与执行分开,即Person
。
注意:为什么这个有用已经在Aamir和Gravell的上述答案中涵盖了,所以我不会重复相同的