java类的继承有实例的区别 主要的问关于两者占内存的区别
比如我有一个A类里面有1个方法a()有创建了一个B类,里面有10个方法,10个方法里面都要用到A里面的a()方法
问是在B里面的10个方法里面都 new 一下A好点  还的让B继承A然后在10个方法里面直接用a()方法
有或者 把a()写成 静态的 直接用A.a();不继承也不实例  问那种好点占系统资源最少

解决方案 »

  1.   

    继承比不继承占用资源要少,因为不继承就要创建多个A对象,消耗CPU和内存资源。
    我觉得写成静态的与继承的差别不明显,关键是从面向对象的思想出发,哪种更合适。
      

  2.   

    把A类的对象作为b类的属性,或者在b类中注入a类对象
      

  3.   

    java中使用继承,主要是为了不必重新开发,并且在不必了解实现细节的情况下拥有了父类所需要的特征.
    这就可以节省一些内存空间;若不继承时,就要为其重新开辟一定的内存空间;这样就造成了一些不必要的内存空间的浪费;
    静态的是在内存中就只有一份他依靠类的存在而存在;不依靠任何对象的存在而存在;所以说静态的与继承没多大的区别,二者之间可以任选一个就行;
      

  4.   

    把A类的对象作为b类的属性,或者在b类中注入a类对象
    这个也行,你试试吧!
      

  5.   

    用ioc依赖注入,比如一些框架都可以完成这件事,实际上不显示的去new就是为了降低系统的耦合性
      

  6.   

    在B中定义:private A a = new A();使用a.a();
      

  7.   

    要搞清楚这个问题很简单,
    回答以下2个问题:
    1,A类和B类什么关系?
    2,A类的对象和B类的对象什么关系?看LZ的意思,是B类里面有10个方法都要调用A里面的方法,再请问,A.a()是纯粹的处理过程还是要带数据处理的,这里你并未给出,那么我就只能推定你只是处理一个过程,比如输出一个固定的值,或者对传入参数做处理。如若是这样的话,那么这个方法直接写成静态的就行了否则的话,就要考虑A类的对象和B类的对象之间存在着什么样的关系,如果是聚合关系,也就是利用,那么直接讲A类对象作为B类对象的一个属性即可。最后,LZ好好理解写OOP的概念吧,要看继承可以去我CSDN的BLOG,文章不多,但刚好有继承
      

  8.   

    B 和 A 之间到底是什么关系?
    B use A 成员变量
    B is an A 使用继承。
      

  9.   

    从占用内存角度来考虑,我觉得A是B的成员或B继承于A,内存占用差不多,A是B的成员,好像系统要创建A实例和B实例,比继承时创建的实例多了一个,所以占用内存多一点,其实,继承本身,B实例的内存就是在父类实例内存的基础上再扩展的(也就是子类构造器会调用父类构造器给父类分配内存),所以表面上虽然不存在独立的父类对象实例,但实际上也给A分配了内存(即有super和this之分,当然super不能简单和父类对象话上等号,但也说明了父类内存被分配了),所以,使用成员变量还是使用继承,就看A和B之间的关系了
    类方法,在系统中只有一个备份,而成员方法根据生成的实例而分配不同的内存,生成实例越多,占用内存越多,从短期的使用角度来说,类方法占用资源少,但从长期使用来说,因为成员是使用时才分配内存,而且用完就有可能被回收,成员被回收后,内存也就释放了,而类方法,系统一开始就会加载类,即使不生成该类对象类方法也会在内存存在,而且会一直占用内存直到该类从系统卸载(一般程序不会这么做的)或系统退出,所以类方法或成员方法,就看你是长期还是短期对内存性能的要求,当然这只是基于内存占用的角度来说,类方法和实例方法,在使用上还是有一定的讲究的,也就是说还要考虑其他如封装等问题
      

  10.   

    如果B和A没多少继承联系,个人建议把A类作为B的属性注入。
      

  11.   

    觉得还是用继承比较好,可以把A当做父类,把B当做A类的一个子类这样的话了继父类很方便的