【发布时间】:2017-04-26 15:32:01
【问题描述】:
interface IVehicle
{
int Id { get; set; }
string Name { get; set; }
void Print();
}
class Car : IVehicle
{
public int Id { get; set; }
public string Name { get; set; }
public void Print()
{
Console.WriteLine($"Id {Id} Name {Name}");
}
}
众所周知,接口只能声明成员,我们在继承自该接口的类中实现这些成员。
那么有什么区别呢?为什么我必须重新声明类中的属性?不能使用接口的声明吗?
【问题讨论】:
-
我不明白你在问什么。您似乎了解接口和类之间的区别。你确实在你的类中实现了这些属性。至于用值创建它们,您将创建一个汽车实例,然后将值分配给汽车的属性。
-
您实现了这些属性,但没有为它们分配任何值,这很好,因为它们将具有默认值。
-
一个接口定义了一个类必须实现什么。这就是区别。
-
这个问题以及许多其他问题都可以通过获得一本不错的 c# 初学者书籍来回答。你应该这样做。
-
接口定义了实现它的类必须遵守的契约才能编译。接口并没有说明如何实现必须完成,只说明它满足接口。例如,您为
name创建了一个字符串属性,该属性必须公开一个getter 和setter。您的汽车使用自动属性来满足界面。但是,您可以像这样编写您的汽车:private string _name; public string name { get { return _name;} set { _name = value; } },这将是完全有效的,因为它仍然公开了带有 getter 和 setter 的字符串属性名称。