首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在这种情况下,继承有用吗?

在这种情况下,继承有用吗?
EN

Stack Overflow用户
提问于 2013-11-23 12:28:37
回答 4查看 137关注 0票数 2

我想在地理信息系统上工作,我正处于构思阶段,我有这些道路(方法)。

  • 公路→小学
  • 公路→二级
  • 高速公路LivingStreet→
  • 公路→第三系
  • 公路→住宅
  • 公路→未分类
  • 高速公路→高速公路
  • 高速公路→台阶
  • →高速公路
  • 公路→服务
  • 高速公路→行人
  • 高速公路SecondaryLink→
  • 高速公路PrimaryLink→
  • 公路→干线
  • 公路→路径
  • 高速公路TertiaryLink→
  • 公路→轨道
  • 高速公路→自行车道
  • →公路
  • 高速公路MotorwayLink→

我正在使用Java,我的问题是:是否最好为每个类创建一个扩展抽象类("way")的类?或者最好只在一个类中创建主题,并使用属性int highwayType来区分它们,因为知道每个类都有自己的绘图功能和绘图的缩放级别?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-23 12:42:25

不要使用整数来定义类的类型。面向对象的编程使它更容易实现。

您应该有一个抽象类高速路,所有特定的类都是从它继承的,例如class PrimaryHighway extends Highway。抽象类将声明一个方法render(),然后所有子类都会用它们的特定行为覆盖该方法。

这样,在使用高速路对象时,您就可以对子类- and中的实际行为进行建模,而不必找出所使用的类,因为所有公路都支持render()

您还可以创建一个接口Drawable,所有类都实现这个接口。接口需要在实现它的每个类中定义一个方法render()。好处是,所有可绘制的东西都可以使用这个接口,对于所有不是高速公路的可绘制的东西,您就不必再做同样的事情了。

票数 4
EN

Stack Overflow用户

发布于 2013-11-23 12:52:16

通过这个链接

(设计)

您的类应该只有一个单响应。使用整数和如果其他将使它很难测试和维护。你应该继承遗产。

票数 2
EN

Stack Overflow用户

发布于 2013-11-25 18:58:54

另一方面,您可能希望将其提升到一个级别,而不是尝试在某些类层次结构中对每一种可能的地理特征类型建模。我倾向于避免创建大量的类层次结构,特别是在没有多重继承的Java中。光是高速公路你就上了二十节课。我认为在这条路上,疯狂等待着你。

您列出了一系列功能,这些特性似乎反映了OpenStreetMap提供的一些特性。为什么不看看现有的基于Java的OSM功能的源代码,比如Java OpenStreetMap编辑器,并向多年来一直在这样做的人学习如何将地理特性建模为对象上的属性集合。

更好的是,与其发明您自己的基于Java的地理信息系统--尽管这在学习地理信息系统、Java或面向对象编程方面可能具有指导意义--不如选择一个现有的项目并为改进该项目或其他一些做出贡献。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20162300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档