C# 如何继承父类的某些属性 请考虑这种情况:
我们有一个名为C# 如何继承父类的某些属性 请考虑这种情况:,c#,oop,class,c#-4.0,object,C#,Oop,Class,C# 4.0,Object,我们有一个名为clsMain的基类: class clsMain { int P1{set; get;} int P2{set; get;} int P3{set; get;} string P4{set; get;} string P5{set; get;} } object1 psudo code: { int P1{set; get;} int P2{set; get;} int P3{set; get;} } 我
clsMain
的基类:
class clsMain
{
int P1{set; get;}
int P2{set; get;}
int P3{set; get;}
string P4{set; get;}
string P5{set; get;}
}
object1 psudo code:
{
int P1{set; get;}
int P2{set; get;}
int P3{set; get;}
}
我想从clsMain
获得这两个OBEJCT:
class clsMain
{
int P1{set; get;}
int P2{set; get;}
int P3{set; get;}
string P4{set; get;}
string P5{set; get;}
}
object1 psudo code:
{
int P1{set; get;}
int P2{set; get;}
int P3{set; get;}
}
以及:
在c#中可能吗?我应该使用特定类型的类(抽象类…)
非常感谢你的问题不清楚。。。不能从C中的2对象继承# 如果希望clsMain从object1和object2继承所有属性,则可以执行以下操作:
- object2从object1继承
- clsMain从object2继承
编辑:我忘了说属性必须是受保护的或公共的,否则它们无法从派生类访问。在这种情况下,基类只保留共享属性,如以下伪代码:
class clsMain
{
int P3{set; get;}
}
class object1 : clsMain
{
int P1{set; get;}
int P2{set; get;}
}
class object2 : clsMain
{
string P4{set; get;}
string P5{set; get;}
}
继承在C#中可以作为一级概念:
public class BaseClass
{
public virtual string Name { get { return "Adam"; } }
}
public class ChildClass : BaseClass
{
public override string Name { get { return "Foo"; } }
}
要覆盖某个内容,您需要使其成为虚拟的,并且需要具有除私有之外的任何内容的可访问性
在您的情况下,您可能会执行以下操作:
class clsMain
{
public virtual int P1{set; get;}
public virtual int P2{set; get;}
public virtual int P3{set; get;}
public virtual string P4{set; get;}
public virtual string P5{set; get;}
}
class object1 : clsMain
{
public override int P1{set; get;}
public override int P2{set; get;}
public override int P3{set; get;}
}
class object2 : clsMain
{
public override int P3{set; get;}
public override string P4{set; get;}
public override string P5{set; get;}
}
老实说,你的问题不是很清楚。但是请注意,C#不支持类的多重继承
听起来你想过滤掉这些属性。您无法阻止访问继承的成员(当然,有new
修饰符,但这充其量只是粗略的)。相反,您可以使用以下接口:
interface Iobject1
{
int P1 { set; get; }
int P2 { set; get; }
int P3 { set; get; }
}
interface Iobject2
{
int P3{set; get;}
string P4{set; get;}
string P5{set; get;}
}
class clsMain : Iobject1, Iobject2
{
public int P1{set; get;}
public int P2{set; get;}
public int P3{set; get;}
public string P4{set; get;}
public string P5{set; get;}
}
你想让clases拥有这些属性吗?Tigran下面的回答对我来说很好。不是我,但我猜是因为你发布的代码无效C#。@AdamHouldsworth:原始代码不太:),所以我也遵循了同样的概念。。呸。这个问题是概念性的,所以答案也是..谢谢亲爱的@Adam Houldsworth。但是,当我基于object2创建对象时,我会看到
clsMAin
properties。我想要一个类似Sql的东西view@Kerezo不能隐藏成员。相反,您可以做的是创建只公开您想要的成员的接口,并与该接口对话。