我正在使用抽象类和虚方法。目前我有一个窗口表单,由一个按钮单击和两个多行文本框组成,我在其中显示结果。基类有一个默认构造函数和一个构造函数,它接受基类所需的所有必要数据。有两个类Trees
和Tomatoes
具有默认构造函数和传递所有数据的构造函数。我能够在textBox1中显示项name
,number in stock
和price
。
但是,我无法调用Trees
名为tree_height
的高度变量和Tomatoes
大小以及名为tomatoes_perplat
和{{1 }}。它给我的错误不包含这些变量的定义。我该如何解决这个问题?
CODE
tomatoes_size
答案 0 :(得分:4)
好的,现在我的代码有点编译,更清楚......
您无法访问trees1.tree_height
,因为它在Trees
类中是私有的,并且您尝试从Form1
类中的方法访问它。
您无法从该方法访问tomatos_perplat
,因为Tomatoes
类中没有此类变量 - 有tomatoesinpat
,但这也是私有的。
同上tomatoes_size
- 该字段名为sizeoftomato
,并且是私有的。
保持您的字段隐私是好的想法 - 我不建议将它们公开。相反,您应该公开properties以在类之间公开数据。您可以使用automatically implemented properties作为实现非常简单的属性的简单方法。
我强烈鼓励您为您的组织工作:
不要将嵌套类用于所有内容;它们偶尔会很方便,但通常最好有单独的顶级课程
想想你的方法想要实现的目标 - 目前你的Get_Value
方法毫无意义
我敦促您尝试使用控制台应用程序。它们比GUI更“令人兴奋”,但是 更容易理解和试验。
答案 1 :(得分:1)
您在类中定义了fields未指定access modifier的内容。默认情况下,这些字段将是私有的。
您应该使用public properties来公开这些字段。您还应该考虑auto-implemented properties。
答案 2 :(得分:1)
这将解决它:
public string sizeoftomato;
public int tomatoesinpat;
默认情况下,这些字段是私有。
请注意,字段通常不适合您正在执行的操作。你真的想要属性:
public string SizeOfTomato { get; set; }
public int TomatoesInPlant { get; set; }