2014-10-28 51 views
1
public class Baseclass 
{ 
    private int mTotal = 0; 
    private int mID = 0; 

    public int Total 
    { 
     get { return mTotal; } 
     set { mTotal = value;} 
    } 
    public int ID 
    { 
     get { return mID; } 
     set { mID = value;} 
    } 
} 

public class Derivedclass : Baseclass 
{ 
    private int mX = 0; 
    private int mY = 0; 

    public int X 
    { 
     get { return mX; } 
     set 
     { 
      mX = value; 
      Total = Total + mX; 
     } 
    } 
    public int Y 
    { 
     get { return mY; } 
     set 
     { 
      mY = value; 
      Total = Total + mY; 
     } 
    } 

} 

public partial class Test : Page 
{ 
    Baseclass B = new Baseclass(); 
    Derivedclass D = new Derivedclass(); 
    public Test() 
    { 
     Calculate(); 
    }  

    public void Calculate() 
    { 

     for(int i =1; i <5 ;i++) 
     { 
      B.ID = i; 
      for (int j = 0; j < 5; j++) 
      { 
       D.X = j; 
       D.Y = j; 
      } 
      MessageBox.Show("ID " + B.ID + " Total Sum" + B.Total); 
      B.Total = 0; 
     } 
    } 
    // Out put should be 
    // ID 1 Total Sum 16 
    // ID 2 Total Sum 16 
    // ID 3 Total Sum 16 
    // ID 4 Total Sum 16 
} 

这里我有两个类,Baseclass和derivedclass。我想找出x和y属性是在派生类的总和,总金额设定为基类的共有财产,我想出来的应该是这样的如何在派生类的c#中设置基类的值wpf

// ID 1 Total Sum 16 
// ID 2 Total Sum 16 
// ID 3 Total Sum 16 
+0

你举的例子是混乱的,为什么有两个类,如果一个推导,什么是B'和'D' – 2014-10-28 05:39:56

+0

你现在做了什么'之间的关系。 ..? – Lijo 2014-10-28 05:42:00

+0

我想要派生类中x和y值的总和 – shubh 2014-10-28 05:43:03

回答

2

如果您想要引用任何继承的成员,您可以只使用属性名称,如上所述。如果有一个名称冲突,或您想更清晰,你可以使用基本关键字,像这样:

base.Total = 15; 

这里有基础的关键字MSDN文章:http://msdn.microsoft.com/en-us/library/hfw7t1ce.aspx

好像不过,你对继承的想法有点困惑。 Baseclass的一个实例与Derivedclass的实例没有任何关系,反之亦然,因为它们是完全独立的对象,彼此之间缺少引用。继承控制类的成员(字段,属性和方法),并允许派生类重用父代中的代码,同时将其功能扩展到更具体的用例。简而言之,你的B和D对象永远不会互相交谈,这首先不是真正的继承点。

所以,没有无用的B对象,你的计算方法应该看起来像这样:

public void Calculate() 
{ 
    for(int i = 1; i < 5; i++) 
    { 
     D.ID = i; 
     for (int j = 0; j < 5; j++) 
     { 
      D.X = j; 
      D.Y = j; 
     } 
     MessageBox.Show("ID " + D.ID + " Total Sum" + D.Total); 
     D.Total = 0; 
    } 
} 

这个版本计算(中)将显示如下:

ID 1 Total Sum 20 
ID 2 Total Sum 20 
ID 3 Total Sum 20 
ID 4 Total Sum 20 
+0

是的......谢谢你的帮助。 – shubh 2014-10-28 06:08:18

+0

如果它帮助你,请注册并选中带有复选标记的答案。 – furkle 2014-10-28 06:09:55

0

的基础类可以有一个虚拟方法。而不是属性

class Baseclass 
{ 

public virtual int GetTotal(){return 0;} // or throw new NotImplementedException(); 
} 


public class Derivedclass:Baseclass 
{ 
    int x = 2; 
    int y = 3; 

    public override int GetTotal() 
    { 
     return x + y; 
    } 
} 
1

你不需要创建基类和派生类的单独实例。派生类将具有基类属性。

您的测试类应该是这样的

public partial class Test : Page 
{ 
    Derivedclass D = new Derivedclass(); 
    public Test() 
    { 
     Calculate(); 
    }  

    public void Calculate() 
    { 

     for(int i =1; i <5 ;i++) 
     { 
      D.ID = i; 
      for (int j = 0; j < 5; j++) 
      { 
       D.X = j; 
       D.Y = j; 
      } 
      MessageBox.Show("ID " + D.ID + " Total Sum" + D.Total); 
      D.Total = 0; 
     } 
    } 
    // Out put should be 
    // ID 1 Total Sum 16 
    // ID 2 Total Sum 16 
    // ID 3 Total Sum 16 
    // ID 4 Total Sum 16 
} 
相关问题