从非父类接收信息

时间:2013-05-16 07:45:42

标签: c# class inheritance

我有一个名为“Land”的班级,它是学校的家长班级。还有另一个独立的“城市”类,其中包含所有土地类别的总人口。

点是学校不能继承城市的信息,有没有办法可以从班级学校获取城市的信息?

我的尝试是private City city = new City();然后city.Population来提取人口信息,但这不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您似乎混淆了is-a(继承)和has-a(组合)。 School位于CityCountry位于Landclass 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}}命名实体一样。

但是当我从评论中得到这个问题时,这个问题是从编程任务中提出的,旨在教你这些原则。但你声称没有时间去学习这个。你打算如何完成下一个编程任务?