多形对象的互换使用
在继承过程中,我们只需要写一个举有共性的对象,描述共性即可,比如鸟 ,我们只需要实现会叫,有翅膀等,具体别的特性,我们使用继承的方法进行复用即可。
在我们需要写一个对这一类的对象操作时,我们不可能要写每一个类的调用方法,所以,我们只需要写一个方法里放通用的父类即可,比如:
public void play(Birds bird){
//逗鸟
}
无论是百灵鸟、鹦鹉还是麻雀,只要是继承Birds类的 都可以放入进去,然后调取,每种鸟的都去方式即可,即:父类声明一个抽象的逗鸟方式,凡是继承这个父类的,都要实现这个逗鸟方法。
或用interface和abstract ,可以更灵活的使用多行对象的互换。
对象的创建和存在时间
在我们的工作中,尤其是在面试中,面试官往往会文档,对象的创建时间、存在的堆栈、声明周期等概念,那么,我们如何理解呢?
在这里我们只讲Java的方式,当我们采用new的形式,创建一个对象时,程序便在内存池中创建了一个空间,此空间存放的便是对象的地址,我们可以称内存池为堆。我们常说 的堆栈,便是其中之一,对象的产生和消除都和内存堆栈密切相关,尤其时Java,Java依赖于jvm虚拟机,堆栈的大小也是通过jvm进行调优的。java默认不支持用户自己去将一个对象进行销毁,由于其自带垃圾回收机制,即我们常说的GC回收机制,我们可以进行设置jvm参数,可以间接的控制GC回收。
以上是我个人的理解,下面我贴出原文,大家可以参考一下:
在Java中,垃圾收集器在设计时已考虑到了内存的释放问题(尽管这并不包括清除一个对象 涉及到的其他方面)。垃圾收集器“知道”一个对象在什么时候不再使用,然后会自动释放那个 对象占据的内存空间。采用这种方式,另外加上所有对象都从单个根类Object继承的事实,而 且由于我们只能在内存堆中以一种方式创建对象,所以Java的编程要比C++的编程简单得 多。我们只需要作出少量的抉择,即可克服原先存在的大量障碍
C++语言的设计者曾经向C程序员发出请求(而且做得非常成功),不要希望在可以使用C的 任何地方,向语言里加入可能对C++的速度或使用造成影响的任何特性。这个目的达到了,但 代价就是C++的编程不可避免地复杂起来。Java比C++简单,但付出的代价是效率以及一定程 度的灵活性。但对大多数程序设计问题来说,Java无疑都应是我们的首选。