首页 新闻 会员 周边 捐助

公共类引用与继承的区别?

0
悬赏园豆:5 [已解决问题] 解决于 2019-05-28 16:48

程序中,我有很多公共的方法,我把这些方法放到了一个类中, 在别的类中, 我可以实例化这个类,进行方法的调用, 也可以把这个类继承下来, 直接使用方法,这两种方式有什么区别呢?

公共类A

类B:类A
{
公共方法();
}

类B
{
类A a = new 类A;
a.公共方法();
}

百鸟朝凤的主页 百鸟朝凤 | 菜鸟二级 | 园豆:260
提问于:2019-03-27 16:55
< >
分享
最佳答案
0

如果只是为了复用公共方法,那在类A里的方法全部设置为static好了,直接用。
没有任何关系的类,不要使用继承,可以了解下里氏替换。
类A包含所有公共方法也不对,没做到接口隔离。

再说一下你想了解的

  • 内存开销:第二种内存碎一点
  • 执行效率:第二种多一次函数调用的开销
  • 多线程:靠你自己保证安全

当然你乐意用哪种就用哪种

收获园豆:5
一罪 | 菜鸟二级 |园豆:250 | 2019-03-28 16:51

里氏替换 那个我明白了。 能稍微再详细的说一下, 接口隔离么,类A包含的都是公共方法,要怎么做接口隔离?

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2019-03-28 16:59

@百鸟朝凤: 公共方法肯定也能分类的,不同公共方法放在不同的类里面,不暴露用户不能用或不需要的接口。

一罪 | 园豆:250 (菜鸟二级) | 2019-03-28 17:18

@一罪: 我这些公共的方法,假如是 1 2 3 ,, 一个类需要用方法 1 和 2 , 另一个类需要用方法 2 3 , 还有一个类需要用方法 1 和 3 ,, 那要这样的话,是不是我的一个方法就要放到一个类里面?

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2019-03-28 17:22

@百鸟朝凤: 分类是从方法本身的性质来分的,而不是为使用方去分,比如有数学计算相关的公共方法,文件操作的公共方法,不能因为类A使用随机数方法作为文件名去创建文件,就把这两个公共方法放在一个类里。

我是觉得公共方法应该都是不需要实例化对象,组合和继承都不怎么好。

一罪 | 园豆:250 (菜鸟二级) | 2019-03-28 17:37

@一罪: 那 例如, 数学计算的公共类里面有3个方法,我只用到了一个, 那这算是暴露了用户不需要的接口么,是不是也没有做到接口隔离? 。。。不是抬杠额。。。是没想明白这块的东西

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2019-03-29 10:14

@百鸟朝凤: 类做的是抽象,因此你要看到接口的本质是什么。举个例子,比如随机数计算就有很多接口,用户虽然只需要用其中一个,但并不算违背接口隔离,因为用户变更随机数计算方法是很常见的,但是你在这个类里暴露三角函数计算就不对了,因为用户可能误用三角函数来当随机值,导致业务异常。当然数学计算的接口都可以放到一个类里也无所谓,从高层抽象来说,大家都是数学相关的。在原则和实际之间还是需要做一定的权衡,类划分太细就会导致类太多,增加程序员的负担。

一罪 | 园豆:250 (菜鸟二级) | 2019-03-29 16:30

@一罪: 哦哦,大概时明白了

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2019-03-29 17:29
其他回答(3)
0

区别就是:你想用哪种.

吴瑞祥 | 园豆:29449 (高人七级) | 2019-03-27 17:17

我习惯用第二种。。我现在想知道这两种除了写法之外,有什么区别。例如在内存开销啊,多线程下,哪种安全啊,执行效率?

支持(0) 反对(0) 百鸟朝凤 | 园豆:260 (菜鸟二级) | 2019-03-27 17:19

@百鸟朝凤: 他们2个一点关系都没有.
这2个场景完全是不相干的2个事情.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2019-03-27 21:22
0

继承的特点是属于,说白了就是归类,把有关联性的类的方法,集中到一起;
比如,项目中有一个关于汽车的父类,那么这里面相关的方法,就是汽车的子类公共方法,而别的类,比如食品类,则不需要用到,食品类就有自己的父类。

而公共类是没有属于关系的,这个类,跟别的类没有关联性方法;
公共类可以写在本项目中,可以写到别的类库,甚至可以写成接口,给别的项目或者类调用。

如果你的项目很大,一直往公共类里面加方法,这个文件会越来越大,造成阅读和修改的困扰;
如果你的项目不大,可以不用细分,随便怎么写都行。

三人乐乐 | 园豆:4823 (老鸟四级) | 2019-03-27 17:23

是不是小点的项目中,一般都是用不到继承和接口这类的东西? 我写代码就没用到过呢,?

支持(0) 反对(0) 百鸟朝凤 | 园豆:260 (菜鸟二级) | 2019-03-29 10:16

@百鸟朝凤: 不是用不到,再小也可以用;你可以自己去熟悉了解,你不用我猜是因为你自己不很了解,然后平时接触的项目正好没用到,甚至用到了你也没注意,所以没去用

支持(0) 反对(0) 三人乐乐 | 园豆:4823 (老鸟四级) | 2019-03-29 10:53
0

都可以,但是肯定有一种方式比另一种方式更合理。如果从业务上讲有继承关系那么就用继承,否则用聚合更好

会长 | 园豆:12463 (专家六级) | 2019-03-27 17:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册