问一个面向对象编程问题,我有几个类它们有许多共同字段但是不需要向上转型,那么我需不需要添加一个父类?

问一个面向对象编程问题,我有几个类它们有许多共同字段但是不需要向上转型,那么我需不需要添加一个父类?
class A{
private int filed1;//
private int filed2;//
private int filed3;//

 private int filed4;//

}

class B{
private int filed1;//
private int filed2;//
private int filed3;//

 private int filed5;//
 private int filed6;//
 private int filed7;//

}

需不需要抽取父类, 这个得看具体情况!

  • 抽象层次越高, 其实际理解越困难, 代码量相对减少;
  • 同理反过来, 抽象层次越低, 理解越容易但代码量越多;

另一方面, 有共同属性也不是说一定要抽取父类. 这要看他们在业务中是不是真的存在 is...a 的关系.
再者, is...a 关系总是能转换为 has...a, 由于Java单根继承特性, 除非有足够的理由(要使用多态)使用继承, 否则请更多考虑使用包含.


打个比方:
一栋100层的高楼和一栋一层的平房都是楼房,
但建造100层的高楼就必须要合理的设计(主体框架, 承重结构, 重力扭矩等等)...
而这些设计在修建一层的平方时就忽略不计了, 如果硬要用这些设计反而使得工期, 人力成本增加, 得不偿失!

需要,继承后子类具有父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性

不是一个类,不要强行添加基类,正确的做法有两个
(1)使用接口+静态方法
(2)使用类的聚合代替继承