多态调用例题详解

多态调用例题详解

package upcasting; 
class point{      
    int x, y;
  
   2. point(int a, int b){a=1,b=1
    	x=a;  y=b;
    	System.out.println("point constructor:"+getString( ));//由于存在覆盖,故调用子类的getString()方法
    }
    public void finalize( ){   // 注意该方法
	System.out.println("point finalizer:"+getString( ));
    }
  
    4.(7.)String getString( ){	  return "x="+x+"  y="+y;    }
}//x = 1, y = 1.再回到3.(6.)处
class circle extends point{
	   int radius;
	  circle(int r, int a, int b){//r=1,a=1,b=1
		1.super(a,b);		5.radius=r;//r=1,a=1,b=1
		6.System.out.println("circle constructor:"+getString( ));
	   }调用子类的getString()方法
	  public void finalize( ){ 
		System.out.println("circle finalizer:"+getString( ));
	   }
	  3.6.)String getString( ){ 
		return  super.getString( )+"   radius="+radius;  
	  }//super.getString 调用父类的getString()方法,此时radius系统默认为0.
	  //由7.处回来之后,radius = 1;
	} 

public class downcasting{
	public  static void main(String args[]) {
		point c1,c2;
		c1=new circle(1,1,1);	
		c2=new circle(2,2,2);	

		c1=null; 
		c2=null;
		System.gc( );//显式调用垃圾回收器

		
	}
}
#
point constructor:x=1  y=1   radius=0
circle constructor:x=1  y=1   radius=1
point constructor:x=2  y=2   radius=0
circle constructor:x=2  y=2   radius=2
//垃圾回收器部分
circle finalizer:x=2  y=2   radius=2
circle finalizer:x=1  y=1   radius=1
更详尽的步骤可以通过单步调试看的更加清楚!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值