首页 > 解决方案 > 在多个类中共享公共属性的最佳方式是什么?

问题描述

在多个类中共享公共属性的最佳方式是什么?

例如:

Class A
{
int a;
int b;
int c;
}

Class B
{
int a;
int b;
int d;
}

由于属性ab本示例中的属性被重复,共享这些属性的最佳方式是什么?

目的是尽可能地重用代码。使用继承来共享数据成员是正确的做法吗?

标签: javac#oopreusabilitydatacontract

解决方案


在类之间共享属性和行为(方法/操作)的常用方法是使用继承

Class X {    // Common base
   int a; 
   int b;
}
Class A:X {  // One specialization 
   int c; 
}
Class B:X {  // Another specialization
   int d; 
}

这有助于重用,因为您可以在不同的上下文中重用 X 的实现。

但是使用继承不仅仅是共享一些元素:继承还定义了一种泛化/特化关系:A 是一种特殊的 X。这意味着人们可能希望在使用 X 的地方也可以使用 A。此外,这是一个确定的关系:A 始终是 X。

但是正如您所指出的,如果只是为了共享,并且在没有任何概念关系的情况下,使用继承来节省一些击键可能不是最明智的想法。如有疑问,您可能更喜欢组合而不是继承

Class X {    // Some elements to be shared
   int a; 
   int b;
}
Class A  {  // Independent class  
   X x; 
   int c; 
}
Class B:X {  // Another independent class
   X x; 
   int d; 
}

每个 A 和 B 都有一个属性 x,其中包含共享的 a 和 b。优点是 A 和 B 不受约束来推动 X 的界面。此外,该关系是动态的(例如,您可以没有定义 x,或者 x 可以更改)。此外,根据语言的不同,您甚至可以在多个 A 和 B 对象之间共享同一个 x 对象。


推荐阅读