就先有父类先有子类(个人理解)

来源:互联网 发布:公安网络报警平台 编辑:程序博客网 时间:2024/06/04 00:58

由于昨天上课讲到先有父类,还是先有子类时候,有点迷,教员老师说先有子类再有父类。但是自我感觉不太符合逻辑,老师意思是父类是众多子类抽取共性造出来的,具有便于维护,安全,更好的延伸性的特点。

但是我觉得在逻辑上是先有爹,再有儿子,而不能说大儿子,二儿子都像爹,就说先有儿子,再有爹,举例说虽然我们是某某的同学,所以先认识某某,然后某一天去其家玩,认识了其父亲,就说你啥时候生的你爹啊,和你这么像,你这么说一定会被揍。我觉得编程也是如此。

所以我在微信上的老师们以及广大网友中提问后,得到以下结果(我把一些经典及有营养回复截取下来):

课工场璇老师的观点是:首先先说下类,  类本身是具有共同行为和属性的具体事物的抽象,因为被继承后才能被称为父类 继承的被称为子类 ,从概念上来看 并不存在先后关系因为类的概念是一样的 ,从开发的角度来看 能力好经验多的人一般都先开发父类,经验少的人先开发子类 然后抽取子类的方法用作父类 。

这个就看设计能力了,如果设计能力不够,那么就可以先写,然后后期代码整合可以看出哪些子类可以有个共有的父类,从而创建父类让其继承,如果设计能力好,那么一开始就可以写父类,那么以后的子类都继承就好了

以上纯属陈璇个人观点

豆子科技钟声老师直接反问没有父类怎么会有子类。

微信群回复:

1、             在程序运行的时候先加载父类的class文件,然后加载子类的class文件,编写好的类,只有实例化以后才能使用,当子类实例化的时候JVM发现还有父类,那么JVM会先实例化父类,那么JVM会先实例化父类,再实例化子类,然后你就可以用了,当你用父类不用子类的时候,子类不用加载,当你用子类不用父类的时候,父类也要实例化加载到内存中。

2、             如果有足够时间去做设计的话,那就先父,如果没有足够时间就先子,这个不重要,无所谓,父类只是把共同点提取出来,简化代码,方便扩展。

oschina社区众网友回复:

1、视角不同,站在他们各自的角度,谁都可以先,谁也都可以后。。。

2、子类的构造方法必须先调用父类的构造方法,你说先生成哪个?

3、你说的是设计吧  自上而下和自下而上都可以 一般来说大的结构上是自上而下的,而具体的功能或者小模块可以用自下而上的方式去设计->重构

4、面向对象设计--开闭原则是设计目的,为了实现它会把某些类的共性抽象出来形成抽象类(包括接口),你要是不能满足这个目的那设计父类干嘛,所以说是先有子类

5、建议阅读《七周七语言》

6、反问一句?先有鸡呢?还是先有蛋呢?

7、一般人认为树的根部是在下面,但程序员画的树的根部是在上面。一般人都认为先有父再有子,你说程序员的世界应该哪个先。

8、这问题很好啊。水平不高,只能说点个人的体验。我的感觉是,日常工作中,还是先有具体的子类,然后抽象出父类。但我真正想说的是,类的层次不可太深,尽量扁平化,二到三层已经足够。

.net 和 java 那样枝叶繁茂的类库,需要极高的水平和经验。对于普通人来说,是不容易掌控的。一般人,建议主要精力,还是放在一个个具体的对象上。

对于 C++ 程序员来说,也就是很多人说的,“带类的 C ”风格

9、老师说的也没错啊。从构造类这个工作而言,本身是个归纳和抽象的过程。自然是先有“子类”,然后逐步抽象共性,形成“父类”。如果你已经固化了一个“父类”,然后要衍变扩展出“子类”,这是后面阶段的事情了,而且我不觉得这个阶段是在“构造”一个类。哈。 

10、伪命题,就像问是先有a还是先有b一样

 

个人结论:在原理以及实际JVM运行上是先有父类再有子类,实际开发因人而异。自上而下,自下而上都可以,看具体项目

 

前辈对我的结论说明:没错,你要命吧写代码的顺序和编译顺序不搭,你想先写什么都没人拦着你,只是有推荐的书写顺序顺序是因为顺着逻辑写更清晰。

原创粉丝点击