number one

更新时间:2022-12-31 18:24:32 阅读: 评论:0


2022年12月31日发(作者:栀子花开英文版)

java中有虚函数,但是没指针,那也许会有这样的问题,那java是怎么实现多态的?

java中可以肯定是有虚函数的,而且我们如果不申明为final,默认就是虚函数.不用vitual

申明.

"InJava,cbindingisthedefault

onotwantamethodtobevirtual,youtagitasfinal"--from

I>.

java中没显示的和c++中的指针,但是他有地址的概念的.而且所有我们申明的"对象"其

实就是地址(或叫句柄),给他赋值就是把他指向一个内存单元.当然也可以改变他的指向.其实

我们"对象"的赋值操作全是地址在变东,对象还是没有变的.那也许有人会说那样的话不是会

产生很多没有"对象"(句柄)的内存区域.是的是会产生,但是java的垃圾收集机制会给我们回

收这样的内存"泄漏".所以我们只关心我们操作的对象就行,其他的我们不用的对象的后事垃

圾收集会给我们干.

明白了在java中的"对象"而非我们c++中理解的对象.而实际上是指针(句柄)那多态当

然可以实现.

下面举个"对象"赋值(引用)的例子说明,全是地址在变,而非真的内存单元.

publicclassNumber{

privateintnumber;

publicNumber(intnumber){

=number;

}

publicintgetNumber(){

;

}

publicvoidtNumber(intnumber){

=number;

}

publicstaticvoidmain(String[]args){

Numberone=newNumber(1);

Numbertwo=newNumber(2);

n("Beginning:");

n("One="+ber());

n("Two="+ber());

//Assigntwotoone

two=one;//在这里two这个句柄的值(即某个对象的地址)改成one这个句柄的值了.

从而two和one指同时//向one以前指向的那个内存单元(对象).而two以前指向的那个对象

现在为没有句柄连接的对象了.可能要被垃圾收集

n("nAfterassigningtwotoone:");

n("One="+ber());

n("Two="+ber());

//Changethevalueoftwo

ber(3);//two和one指向同一个单元,所以他对改单元的改变,one能感知.

n("nAftermodifyingtwo:");

n("One="+ber());

n("Two="+ber());

}

}

运行结果:

Beginning:

One=1

Two=2

Afterassigningtwotoone:

One=1

Two=1

Aftermodifyingtwo:

One=3

Two=3

Pressanykeytocontinue...

本文发布于:2022-12-31 18:24:32,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/67069.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:road
下一篇:ndo
标签:number one
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图