关于属性和接口两个问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:06:05
属性:属性只是用来读写字段的数据吗?这样做有什么用吗?
class A
{
private int n;
public int N
{
get{return n;}
set{n=value;}
}
}
我不用属性也可以对字段进行读写,为什么要用属性? 请用反例帮我说明,就是说举个例子,如果不用属性的话会出现什么不好的现象。

接口: 接口只是定义了一些成员在里面,然后通过类来对他们进行访问?为什么要这样做,直接在类里面定义不得吗? 同样反例帮我说明。

谢谢。

属性的本质是存取器(Accessor),他封装了对字段的访问(读/写)。
对于面向对象语言,通常不开放其数据接口,因此,通过存取器来隔离。
你当然可以不用,但在.Net中大量的基础类是支持属性而不是字段的,例如:PropertyView等。
再比如indexer,只能按照他的规则写属性阿。

接口的存在理由更简单了,因为C#是单继承的机制,假如你的类想实现两个接口或继承两个类,就只能用接口来实现。

其实这么做是为了安全着想的,你上边写的属性其实是一种确实没必要的东西呵呵,不过继续看
如果属性是这样的呢
class A
{
private int n;
public int N
{
get{return n;}
}
}
就是说只允许看到他的值而不能修改,就类似只读一样
当然属性也可以写成这样
class A
{
private int n;
public String N
{
get{return n.toString();}
set{n=Int32.Parse(value)}
}
}
总之代码是可以千变万化的呵呵