试图学习进入死胡同 类
Hit a dead-end trying to learn classes
我的秋季学期将包括使用 c#,所以我正在尽我所能。我想做的第一件事是了解抽象 classes,但我在使我的代码工作时遇到了问题。这是一个 "item" class,并且有 3 个 .cs 文件,包括主项目 class。
这是摘要class。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{
abstract public class item
{
public abstract string prodName { set; }
public abstract int amount();
}
}
这是子class。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{
public class ProteinPowder : item // Says it doesn't implement anything.
{
private string name;
private int itemAmount;
public proPowder(string name, int amount) // Is this correct?
{
this.name = name;
this.itemAmount = amount;
}
public string Name { set => name = value; }
public int Amount { set => itemAmount = value; }
}
}
主项目目前是空的。我认为可以通过正确实施 ProteinPowder 来解决这些问题,但我无法让它发挥作用。有人可以指出我做错了什么吗?
** 编辑 ***
这样好看吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{
public class ProteinPowder : item
{
private string name;
private int itemAmount;
public ProteinPowder(string name, int amount)
{
this.name = name;
this.itemAmount = amount;
}
public int Amount { set => itemAmount = value; }
public override string prodName { set => throw new NotImplementedException(); }
public override int amount()
{
throw new NotImplementedException();
}
}
}
摘要class简而言之就是"anything that implements me must provide an implementation for all abstract properties/methods i have"。
在您的例子中,item
有 2 个抽象项目。 prodName
和 amount
.
这意味着在您的 ProteinPowder
class 中,您需要实现这些,例如
public override string prodName { set => /*do something specific for ProteinPowder*/}
public override int amount()
{
// do something specific for ProteinPowder
}
你提出的关于 public proPowder(string name, int amount) // Is this correct?
的第二件事,答案是否定的。
我假设这是构造函数,因为缺少 return 类型。构造函数必须与 class 的名称相匹配,因此应为
public ProteinPowder(string name, int amount)
我的秋季学期将包括使用 c#,所以我正在尽我所能。我想做的第一件事是了解抽象 classes,但我在使我的代码工作时遇到了问题。这是一个 "item" class,并且有 3 个 .cs 文件,包括主项目 class。
这是摘要class。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{
abstract public class item
{
public abstract string prodName { set; }
public abstract int amount();
}
}
这是子class。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{
public class ProteinPowder : item // Says it doesn't implement anything.
{
private string name;
private int itemAmount;
public proPowder(string name, int amount) // Is this correct?
{
this.name = name;
this.itemAmount = amount;
}
public string Name { set => name = value; }
public int Amount { set => itemAmount = value; }
}
}
主项目目前是空的。我认为可以通过正确实施 ProteinPowder 来解决这些问题,但我无法让它发挥作用。有人可以指出我做错了什么吗?
** 编辑 ***
这样好看吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{
public class ProteinPowder : item
{
private string name;
private int itemAmount;
public ProteinPowder(string name, int amount)
{
this.name = name;
this.itemAmount = amount;
}
public int Amount { set => itemAmount = value; }
public override string prodName { set => throw new NotImplementedException(); }
public override int amount()
{
throw new NotImplementedException();
}
}
}
摘要class简而言之就是"anything that implements me must provide an implementation for all abstract properties/methods i have"。
在您的例子中,item
有 2 个抽象项目。 prodName
和 amount
.
这意味着在您的 ProteinPowder
class 中,您需要实现这些,例如
public override string prodName { set => /*do something specific for ProteinPowder*/}
public override int amount()
{
// do something specific for ProteinPowder
}
你提出的关于 public proPowder(string name, int amount) // Is this correct?
的第二件事,答案是否定的。
我假设这是构造函数,因为缺少 return 类型。构造函数必须与 class 的名称相匹配,因此应为
public ProteinPowder(string name, int amount)