从非父类接收信息

本文关键字:信息 父类 | 更新日期: 2023-09-27 18:13:45

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

学校不能从城市

继承信息,有没有办法从班级学校访问城市的信息?

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

从非父类接收信息

您似乎混淆了is-a(继承(和has-a(组合(。School位于City,而又位于CountryLand中。这对我来说似乎是一个明智的设计:

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命名实体。

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