我目前正在使用抽象类和虚方法。我正在做一个带有窗体的小项目,该窗体列出了两个类Trees
和Tomatoes
。结果显示在两个文本框中。 TextBox1
显示名称,库存数量和每件商品的价格。 TextBox2
显示每个工厂的总价格。我正在尝试添加一个方法来显示所有植物的总数,并在TextBox2
中显示它?
代码
namespace nursery_plant
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public abstract class Plants
{
public string the_name;
public double num_stock;
public double price_peritem;
public double total_item_value;
public Plants(string new_name, int new_stock, double new_price)
{
the_name = new_name;
num_stock = new_stock;
price_peritem = new_price;
}
public override string ToString()
{
return "";
}
public virtual double Get_Value()
{
double s = 0;
return s;
}
}
public class Trees : Plants
{
double tree_height;
public Trees(string new_name, int new_stock, double new_price, double new_height)
: base(new_name, new_stock, new_price)
{
tree_height = new_height;
total_item_value = num_stock * price_peritem;
}
public override string ToString()
{
string s = "Tree" + " " + num_stock + " " + the_name + " " + price_peritem + " " + tree_height ;
return s;
}
public override double Get_Value()
{
total_item_value = num_stock * price_peritem;
return total_item_value;
}
}
public class Tomatoes : Plants
{
string sizeoftomato;
int tomatoesinpat;
public Tomatoes(string new_name, int new_stock, double new_price, int tomatoes_perplat, string tomatoes_size)
: base(new_name, new_stock, new_price)
{
tomatoesinpat = tomatoes_perplat;
sizeoftomato = tomatoes_size;
total_item_value = num_stock * price_peritem;
}
public override string ToString()
{
string s = "Tomatoes" + " " + num_stock + " " + the_name + " " + price_peritem;
return s;
}
public override double Get_Value()
{
total_item_value = price_peritem;
return total_item_value;
}
}
public void Report()
{
Trees trees1 = new Trees("Tree", 3, 14.40, 2);
const string format = "{0,-26} {1,-25} {2,-25} {3,-25}";
string trees1_result = String.Format(format, trees1.the_name, "Oak", trees1.num_stock, trees1.price_peritem);
textBox1.AppendText(trees1_result + Environment.NewLine);
textBox2.AppendText(trees1.Get_Value() + Environment.NewLine);
Tomatoes tomatoes1 = new Tomatoes("Tomatoe", 30, 10, 12, "Large");
const string format2 = "{0,-26} {1,-25} {2,-25} {3,-25}";
string tomatoes1_result = String.Format(format2, tomatoes1.the_name, "Big Boy", tomatoes1.num_stock, tomatoes1.price_peritem);
textBox1.AppendText(tomatoes1_result + Environment.NewLine);
textBox2.AppendText(tomatoes1.Get_Value() + Environment.NewLine);
}
private void button1_Click(object sender, EventArgs e)
{
Report();
}
}
}
答案 0 :(得分:2)
难道你不能只使用这样的东西吗?
textBox2.AppendText(trees1.total_item_value + tomatoes1.total_item_value);
另外,我注意到你正在重复一些共享逻辑。这一行,例如
total_item_value = num_stock * price_peritem;
可以进入抽象基类'构造函数。