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 父类访问子类对象的实例变量 继承过程中的执行顺序

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

父类引用指向子类对象

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

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

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

要理解多态性,首先要知道什么是“向上转型”。         我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过   Cat c = new Cat(); 实例化一个...

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

java多态,如何理解父类引用指向子类对象 要理解多态性,首先要知道什么是“向上转型”。         我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过   C...

Java 中深层理解父类引用指向子类对象

从对象的内存角度来理解试试. 假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存. 现在通过代码来看看内存的分配情况:Father...

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

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

Java多态性详解——父类引用子类对象

面向对象编程有三个特征,即封装、继承和多态。   封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。   继承是为了重用父类代码,同时为实现多态性...

Java多态性详解——父类引用子类对象

面向对象编程有三个特征,即封装、继承和多态。   封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。   继承是为了重用父类代码,同时为实...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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