Java - 类层次结构

时间:2014-04-21 22:38:42

标签: java class-hierarchy

我对编程和我的其中一个课程相对较新我必须为以下内容创建一个类层次结构CountryState,{ {1}},CountyCityBoundary

我该怎么做?

我想我明白我不能使用River,因为它意味着一件事是不同的事情,是正确的思考方式吗?另外,我知道Java中存在HAS-A关系,但我不知道如何使用它,我是否只创建单独的类文件?或者,有没有其他方法可以做到这一点?

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

考虑一下类似的东西。

国家,州,郡,市都是可以互相包含的地理实体。

河流是一个可以跨越人类定义边界的地理实体。

边界有助于描述上述任何内容。

国家,州,县,市和河都有一些共同的属性。例如,他们可能都有一个名字。他们也都有边界。这意味着他们或许应该共享一个共同的基类(可能是GeographicEntity)。

国家,州,郡,市有层次结构,它们是人为定义的。您可以考虑使用GeographicEntity的子类,例如PoliticalEntity,它具有以下内容:

  • 它所属的家长PoliticalEntity
  • 其包含的零个或多个实体的列表(例如,国家/地区包含州)。

请注意,在现实生活中事情并不那么简单(例如,有些城市跨越县或甚至州线),但是为了学习这些边缘案例可能会被忽略。

答案 1 :(得分:0)

  

一个国家有一个国家   一个州有一个县   一个县有一个城市   一个城市可以有一条河

我想你可以说他们都有边界。取决于你对边界的意思。实施:

public class Country
{
    private State states[];
    private Boundary boundary;
}

public class State
{
    private County counties[];
    private Boundary boundary;
}

public class County
{
    private City cities[];
    private Boundary boundary;
}

public class City
{
    private River rivers[];
    private Boundary boundary;
}

public class Boundary{}

如果您想成为技术人员,我认为有时候States会被Rivers限制:

public class River extends Boundary{}

答案 2 :(得分:0)

你是正确的extends IS-A 是一件事。你需要的是 HAS-A 。这可以实现阶级和成员关系。

让我们举一个国家,州和城市的例子,从底部开始,即最小的一个。因为city是一个真实世界的实体。让我们为城市创建一个课程

class City{
   //members of city class
}

我们知道一个州可以有多个城市,例如三个城市。现在让我们创建ha HAS-A关系

class State{
  City city1;
  City city2;
  City city3
}

同样,一个国家可以有许多州和不同的城市(例如印度的工会领土)。

class Country{
  State state1;
  State state2;
  City city1;
}

希望你现在明白了。