2013-07-20 350 views
2

假设我有3个类(父,子和女儿)。我想让儿子和女儿使用Parent的Name getter方法,但是我想分别为每个孩子类应用不同的属性。覆盖属性属性

public class Parent { 

private string name; 

public string Name { 
    get { return this.name; } 
    set { this.name = value != null ? value.trim() : null; } 
} 

} 

和儿子...

public class Son : Parent { 
    [SonAttribute] 
    public string Name { // keep parent behavior } 
    } 
} 

同为女儿Name getter方法但[Daughter]属性。

我可以这样做吗?

+0

@TGH - 感谢您的回答(看起来像被删除了)。我选择了p.s.w.g,因为我没有完全理解关于方法的'new'关键字。 –

回答

4

假设Name虚拟的Parent

public class Parent 
{ 
    public virtual string Name 
    { 
     get { return this.name; } 
     set { this.name = value != null ? value.trim() : null; } 
    } 
} 

你总是可以做到这一点:

public class Son : Parent 
{ 
    [SonAttribute] 
    public override string Name 
    { 
     get { return base.Name; } 
     set { base.Name = value; } 
    } 
} 

如果Name属性是不是虚拟的,你将创建一个新的属性,它的属性基类型,这可能不是你想要的。详细信息请参见Knowing When to Use Override and New Keywords (C# Programming Guide)

+0

儿子和女儿班的“名”字段是否属于父亲或孩子? –

+0

@Kevin私人领域将属于'Parent'类。 –