Java 父类和子类对象销毁实例

原创 2013年12月02日 14:32:41

1)定义一个共享类Shared

使用long而不使用int,是为了防止溢出,refcount是共享类被其他类引用的次数,只要还有其他的类引用这个类,共享类就不会被GC回收。

package cn.javass.user;

public class Shared {
 private int refcount=0;
 private static long counter=0;
 private final long id=counter++;
 
 public Shared(){
  System.out.println("Creating "+this);
 }
 
 public void addRef(){refcount++;};
 
 protected void dispose(){
  if(--refcount==0){
   System.out.println("Disposing "+this);
  }
 }
 
 //重写toString方法
 public String toString(){return "Shared"+id;};
}

2)定义一个组合类

package cn.javass.user;

public class Composing {

 private Shared shared;
 private static long counter=0;
 private final long id=counter++;
 
 public Composing(Shared shared) {
  // TODO Auto-generated constructor stub
  System.out.println("Creating "+this);
  this.shared=shared;
  this.shared.addRef();
 }
 
 protected void dispose(){
  System.out.println("disposing "+this);
  shared.dispose();
 }
 
 public String toString(){return "Composing" +id; };
}

3)定义引用计数类

package cn.javass.user;

public class ReferenceCounting {

 public static void main(String[] args) {
  Shared shared=new Shared();
  Composing[] composings={new Composing(shared),new Composing(shared),new Composing(shared),new Composing(shared),new Composing(shared)};
  for(Composing c:composings)
   c.dispose();
 }
}

 

如何正确的创建和销毁Java对象

Java是一门强大的高级语言。在学习了其基础知识后,我们仍需要理解其深刻的内涵。接下来,我们会以《Effective Java》一书做为Java进阶学习的载体,对Java进行一个系统的、全新的认识。 ...

Java进阶 创建和销毁对象

最近准备写点Javase的东西,希望可以帮助大家写出更好的代码。 1、给不可实例化的类提供私有构造器 比如:每个项目中都有很多工具类,提供了很多static类型的方法供大家使用,谁也不希望看到下面的代...

Java基础知识总结(一)创建和销毁对象

契子:明年就要离开学校找工作了,时间过的真快,想一想这几年,做了一些事,也有一些事并没有做好,有很多收获,也有不少遗憾。感性的话在此不宜多说,既然选择了程序员这条道路,也要有把它到做事业的态度。在正式...

java 父类访问子类对象的实例变量 继承过程中的执行顺序

子类的方法可以访问父类的实例变量,

父类引用指向子类对象

  • 2012年11月24日 15:59
  • 3KB
  • 下载

实例化子类的时候是否内存也实例化一个父类对象?

个人理解: 1,实例化子类不会去自动实例化父类,因为父类有可能是抽象类,抽象类是不能被实例化的 2,不是获得父类的变量,而是子类自己的变量了,你可以创两个不一样的子类,父类的字段给不一样的值都可以...

java继承实质、父类引用指向子类对象(多态)、声明时类型、运行时类型

继承是面向对象的三大特征(封装、继承和多态)之一,也是java语言的重要特性。 那么,继承父类的成员变量和继承父类的方法有什么区别吗?答案是肯定的。有的人甚至都不知道这个问题的存在。 继承成员变量...

java多态性,父类引用指向子类对象

父类引用指向子类对象指的是:例如父类Animal,子类Cat,Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。Animal animal = new Cat...

java多态,如何理解父类引用指向子类对象

要理解多态性,首先要知道什么是“向上转型”。         我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过   Cat c = new Cat(); 实例化一个...
  • Simtice
  • Simtice
  • 2011年03月11日 15:46
  • 1487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 父类和子类对象销毁实例
举报原因:
原因补充:

(最多只允许输入30个字)