我有一个名为“土地”的班级,它是学校的父班级。还有另一个独立的类别“城市”,其中包含所有土地类别的总人口。
点是学校不能继承城市的信息,有没有办法可以从班级学校访问城市的信息?
我的尝试是 private City city = new City();
然后city.Population
提取人口信息,但这没有奏效。有什么建议么?
我有一个名为“土地”的班级,它是学校的父班级。还有另一个独立的类别“城市”,其中包含所有土地类别的总人口。
点是学校不能继承城市的信息,有没有办法可以从班级学校访问城市的信息?
我的尝试是 private City city = new City();
然后city.Population
提取人口信息,但这没有奏效。有什么建议么?
您似乎混淆了is-a
(继承)和has-a
(组合)。ASchool
位于 a 中City
,而 a 又位于 aCountry
或Land
中。对我来说,这看起来是一个明智的设计:
class Land
{
public string Name { get; private set; }
public Land(string name)
{
this.Name = name;
}
}
class City
{
public string Name { get; private set; }
public Land Land { get; private set; }
public int Population { get; private set; }
public City(string name, int population, Land land)
{
this.Name = name;
this.Population = population;
this.Land = land;
}
}
class School
{
public string Name { get; private set; }
public City City { get; private set; }
public School(string name, City city)
{
this.Name = name;
this.City = city;
}
}
您可以通过以下方式使用它:
var land = new Land("Foo");
var city = new City("BarCity", 9001, land);
var school = new School("BazSchool", city);
现在您可以访问学校所在城市的人口school.City.Population
。
如您所见,我们现在有三个包含Name
属性的类。例如,您可以将其提取到一个新的(抽象)类中NamedEntity
,并让所有其他三个类都继承自这个类,作为每个is-a
命名实体。
但正如我从评论中得知的那样,这个问题是从一项编程任务中提出的,旨在教你这些原则。然而你声称没有时间学习这个。你打算如何完成你的下一个编程任务?