我正在学习这门课程here和this is live demo
请问几个问题,因为我想确认我正在理解自己正在阅读的内容:
1)为什么在下面的代码中创建对象时直接设置一个值
Transaction t1 = new Transaction("8877", "6/25/2018");
而不是像下面这样;这不起作用!!!
Transaction transac1 = new Transaction();
transac1.("1234", "2019/10/03");
2)public Transaction() {
和public Transaction(string c, string d)
是否超载概念?
3)下面是使用重载的构造方法吗?
public Transaction()
{
tCode = " ";
tDate = " ";
}
4)为什么事务类没有属性,尽管我只看到下面两个带有私有访问修饰符的字段/变量。而我在OOP书中读到,您必须始终使用属性以免暴露外部字段。
private string tCode;
private string tDate;
public interface ITransactions
{
// interface members
void showTransaction();
}
public class Transaction : ITransactions
{
private string tCode;
private string date;
public Transaction()
{
tCode = " ";
date = " ";
}
public Transaction(string c, string d)
{
tCode = c;
date = d;
}
public void showTransaction()
{
Console.WriteLine("Transaction ID: {0}", tCode);
Console.WriteLine("Date: {0}", date);
}
}
class Tester
{
static void Main(string[] args)
{
Transaction t1 = new Transaction("8877", "6/25/2018");
Transaction t2 = new Transaction("5656", "7/25/2018");
t1.showTransaction();
t2.showTransaction();
Console.ReadKey();
}
}
答案 0 :(得分:0)
1)
[...]无效!
Transaction transac1 = new Transaction(); transac1.("1234", "2019/10/03");
是的,这根本不起作用,它是无效的语法。您可以将构造函数称为new Transaction();
或new Transaction("8877", "6/25/2018");
2)
public Transaction() {
和public Transaction(string c, string d)
是重载概念吗?
是的
3)
下面是使用重载的构造方法吗?
[...]
没有“构造方法”之类的东西。您有构造函数,有方法,但是没有任何“构造方法”。
4)
为什么
Transaction
类没有属性,即使我只看到下面两个带有私有访问修饰符的字段/变量。
您不需要使用公共属性公开所有私有字段。不必为您拥有的任何私有字段都拥有公共属性。如果您不想为班级中的任何数据提供此类访问权限,则无需这样做。在这种情况下,您只需要showTransaction()
。