java类的继承有实例的区别 主要的问关于两者占内存的区别
java类的继承有实例的区别 主要的问关于两者占内存的区别
比如我有一个A类里面有1个方法a()
有创建了一个B类,里面有10个方法,10个方法里面都要用到A里面的a()方法
问是在B里面的10个方法里面都 new 一下A好点 还的让B继承A然后在10个方法里面直接用a()方法
有或者 把a()写成 静态的 直接用A.a();不继承也不实例 问那种好点占系统资源最少
------解决方案--------------------- -这种问题。。。无语 这一点的内存占用不用考虑吧。。。
继承又不是为了干这个事情。。。继承是对象设计而继承。。。
------解决方案--------------------
楼主思路有些乱 先搞清楚继承的含义
不过你的问题 一般写成静态方法就行了 最忌讳为了掉一个方法到处new 对象实例
------解决方案--------------------在你的另一贴也作了回答
从占用内存角度来考虑,我觉得A是B的成员或B继承于A,内存占用差不多,A是B的成员,好像系统要创建A实例和B实例,比继承时创建的实例多了一个,所以占用内存多一点,其实,继承本身,B实例的内存就是在父类实例内存的基础上再扩展的(也就是子类构造器会调用父类构造器给父类分配内存),所以表面上虽然不存在独立的父类对象实例,但实际上也给A分配了内存(即有super和this之分,当然super不能简单和父类对象话上等号,但也说明了父类内存被分配了),所以,使用成员变量还是使用继承,就看A和B之间的关系了
类方法,在系统中只有一个备份,而成员方法根据生成的实例而分配不同的内存,生成实例越多,占用内存越多,从短期的使用角度来说,类方法占用资源少,但从长期使用来说,因为成员是使用时才分配内存,而且用完就有可能被回收,成员被回收后,内存也就释放了,而类方法,系统一开始就会加载类,即使不生成该类对象类方法也会在内存存在,而且会一直占用内存直到该类从系统卸载(一般程序不会这么做的)或系统退出,所以类方法或成员方法,就看你是长期还是短期对内存性能的要求,当然这只是基于内存占用的角度来说,类方法和实例方法,在使用上还是有一定的讲究的,也就是说还要考虑其他如封装等问题
纯属个人观点
------解决方案--------------------从Lz提供的信息来看,A和B没什么继承关系,只是单纯的B使用A,所以可以考虑把A作为B的成员
如果A的方法是通用的,即除了B以外可能其他类还会用到,可以考虑用静态方法,否则只有B用到的话,还不如直接作为B的方法
------解决方案--------------------lz想的太远了。如果想要有一个良好的系统,这个问题不是关键。
------解决方案--------------------
B继承A,如果A里没有数据成员(field),基本不需要多余的内存。
方法不管是static的还是非static的,不会影响对象大小。方法不是存在对象里的。
------解决方案--------------------1、这点开销对于WEB开发来说,可以忽略不计
2、如果非要分个清楚,当然是static好,static方法就是干类似你这种事的。继承就不用了,因为这在设计上他们并没有关系,只是一个简单的调用,这和内存占用多少无关。
------解决方案--------------------如果非要从占用内存角度来说的话,抛弃A,直接把方法写在B里面就好了。
------解决方案--------------------静态方法或许好,但也要看此方法是做什么用的
------解决方案--------------------24问完3