我有一个名为“Land”的班级,它是学校的家长班级。还有另一个独立的“城市”类,其中包含所有土地类别的总人口。
点是学校不能继承城市的信息,有没有办法可以从班级学校获取城市的信息?
我的尝试是private City city = new City();
然后city.Population
来提取人口信息,但这不起作用。有什么建议吗?
答案 0 :(得分:4)
您似乎混淆了is-a
(继承)和has-a
(组合)。 School
位于City
,Country
位于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
,并让所有其他三个类继承自这个类,就像每个{{1}}命名实体一样。
但是当我从评论中得到这个问题时,这个问题是从编程任务中提出的,旨在教你这些原则。但你声称没有时间去学习这个。你打算如何完成下一个编程任务?