C# 继承打印两次,但以E开头
嘿,伙计们,我不确定当我从主控制台用这段代码启动控制台时,它会打印两次项目不确定,因为我根本没有循环方法:C# 继承打印两次,但以E开头,c#,C#,嘿,伙计们,我不确定当我从主控制台用这段代码启动控制台时,它会打印两次项目不确定,因为我根本没有循环方法: FoodProducts FoodProd1 = new FoodProducts("FP001", "Meat", 15.99, 200, 100, "Australia"); FoodProducts FoodProd2 = new FoodProducts("FP002", "Bread", 2.99, 150, 50, "Italy");
FoodProducts FoodProd1 = new FoodProducts("FP001", "Meat", 15.99, 200, 100, "Australia");
FoodProducts FoodProd2 = new FoodProducts("FP002", "Bread", 2.99, 150, 50, "Italy");
FoodProd1.Print();
FoodProd2.Print();
class FoodProducts : Products
{
private string origin;
public FoodProducts(string id, string name, double price, int soldCount, int stockCount, string origin)
: base(id, name, price, soldCount, stockCount)
{
this.origin = origin;
//Need to find out why this code prints both lines and not in single line and why it starts from Product 2 when it is printed on the console
PrintOrigin();
}
private string Origin
{
get { return origin; }
set { origin = value; }
}
public void PrintOrigin()
{
base.Print();
Console.WriteLine("Origin: {0}", this.Origin);
}
根据评论更新
基类中定义的Print()
方法:
public void Print() {
Console.WriteLine("Product ID: {0}", this.id);
Console.WriteLine("Product Name: {0}", this.name);
Console.WriteLine("Prodcut Price: {0}", this.price);
Console.WriteLine("Sold Counter: {0}", this.soldCount);
Console.WriteLine("Stock Count: {0}", this.stockCount);
Console.WriteLine();
Console.ReadKey();
}
现在还不清楚您希望输出是什么样子。我根据你前面的问题拼凑了一个产品类。它的输出是这样的 如您所见,它会像您提到的那样打印两次信息。不清楚的是您是否希望每次调用时都打印origin,如果是,则调用
PrintOrigin
方法而不是print方法。否则,如果您只想在构造时打印原点,请从PrintOrigin
方法调用PrintOrigin
方法
调用PrintOrigin而不是Print并从构造函数中删除PrintOrigin语句的第一个示例。
如果希望将方法调用保留为Print而不是PrintOrigin,请将基本方法声明为Virtual并重写它。
i、 e
现在还不清楚您希望输出是什么样子。我根据你前面的问题拼凑了一个产品类。它的输出是这样的 如您所见,它会像您提到的那样打印两次信息。不清楚的是您是否希望每次调用时都打印origin,如果是,则调用
PrintOrigin
方法而不是print方法。否则,如果您只想在构造时打印原点,请从PrintOrigin
方法调用PrintOrigin
方法
调用PrintOrigin而不是Print并从构造函数中删除PrintOrigin语句的第一个示例。
如果希望将方法调用保留为Print而不是PrintOrigin,请将基本方法声明为Virtual并重写它。
i、 e
您对
产品
的实现是什么?这是因为打印
被调用了两次。一次在构造函数中,一次在显式调用中?否则,我不确定我是否理解你的问题。我知道你在哪里声明PrintOrigin方法,但你在哪里声明Print?@MarkHall:OP需要显示产品的实现,正如@Cory指出的那样。很酷,谢谢,但当我拿出PrintOrigin()时在我的课堂上,它似乎没有打印我输入的源代码。您对产品的实现是什么?
?是因为print
被调用了两次吗。一次在构造函数中,一次在显式调用中?否则,我不确定我是否理解你的问题。我知道你在哪里声明PrintOrigin方法,但你在哪里声明Print?@MarkHall:OP需要显示产品的实现,正如@Cory指出的那样。很酷,谢谢,但当我从类中取出PrintOrigin()时,它似乎没有打印我输入的源代码
class Program
{
static void Main(string[] args)
{
FoodProducts FoodProd1 = new FoodProducts("FP001", "Meat", 15.99, 200, 100, "Australia");
FoodProducts FoodProd2 = new FoodProducts("FP002", "Bread", 2.99, 150, 50, "Italy");
FoodProd1.Print();
FoodProd2.Print();
Console.ReadLine();
}
}
public class Products
{
string id;
string name;
double price;
int soldCount;
int stockCount;
public Products(string id, string name, double price,
int soldCount, int stockCount)
{
this.id = id;
this.name = name;
this.price = price;
this.soldCount = soldCount;
this.stockCount = stockCount;
}
public virtual void Print()
{
Console.WriteLine("Product ID: {0}", this.id);
Console.WriteLine("Product Name: {0}", this.name);
Console.WriteLine("Prodcut Price: {0}", this.price);
Console.WriteLine("Sold Counter: {0}", this.soldCount);
Console.WriteLine("Stock Count: {0}", this.stockCount);
Console.WriteLine();
}
}
class FoodProducts : Products
{
private string origin;
public FoodProducts(string id, string name, double price, int soldCount, int stockCount, string origin)
: base(id, name, price, soldCount, stockCount)
{
this.origin = origin;
}
private string Origin
{
get { return origin; }
set { origin = value; }
}
public override void Print()
{
base.Print();
Console.WriteLine("Origin: {0}", this.Origin);
}
}