案例类继承

时间:2014-08-08 19:00:08

标签: scala inheritance

我有一个类层次结构,我更喜欢有三个级别的case类: 我只是在外围意识到Case Classes不承认继承:但我闻到了这一杯咖啡。

所以,现在我有:

"Grandparent" : Abstract class that extends Product
"Kids":  Case Classes  (concrete  - these are instantiated within the framework)
"Grandkids"  Case classes  (not allowed)

现在框架周围有许多样板需要Case Classes的各个方面:所以我不愿意将“Kid”转换为非case类。在那种情况下,至少我需要实现(为了框架的目的):

  • 产品界面方法
  • copy()方法
  • 伴随对象,至少应用apply / unapply。

我对实现这些问题的关注是:它会导致更多的代码需要我的审阅者进行分析,然后进行维护。

有关如何减轻Case Classes的非继承限制对代码膨胀影响的任何想法?

1 个答案:

答案 0 :(得分:0)

按照几条评论的顺序排序 - 尤其是@naemul:我已将“子级”级别(3级层次结构的中间级别)转换为(抽象类/具体类)的组合。

                        GrandParent (abstract class)
                             |
                       Abstract Kids
                       /          \
Concrete Kids (case classes)       \
                                  Concrete Grandkids (case classes)