|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。c++|对照|函数
1.java中有虚函数,可是没指针,那大概会有如许的成绩,那java是怎样完成多态的?
java中能够一定是有虚函数的,并且我们假如不声名为final形他默许就是虚函数.不必vitual声名.
"InJava,youdonotneedtodeclareamethodasvirtual.Dynamicbindingisthedefaultbehavior.Ifyoudonotwantamethodtobevirtual,youtagitasfinal"--from<corejava2:volumI>.
java中没显现的和c++中的指针,可是他有地点的观点的.并且一切我们声名的"对象"实在就是地点(或叫句柄),给他赋值就是把他指向一个内存单位.固然也能够改动他的指向.实在我们"对象"的赋值操纵满是地点在变东,对象仍是没有变的.那大概有人会说那样的话不是会发生良多没有"对象"(句柄)的内存地区.是的是会发生,可是java的渣滓搜集机制会给我们接纳如许的内存"泄露".以是我们只体贴我们操纵的对象就行,其他的我们不必的对象的后事渣滓搜集会给我们干.
分明了在java中的"对象"而非我们c++中了解的对象.而实践上是指针(句柄)那多态固然能够完成.
上面举个"对象"赋值(援用)的例子申明,满是地点在变,而非真的内存单位.
publicclassNumber{
privateintnumber;
publicNumber(intnumber){
this.number=number;
}
publicintgetNumber(){
returnthis.number;
}
publicvoidsetNumber(intnumber){
this.number=number;
}
publicstaticvoidmain(String[]args){
Numberone=newNumber(1);
Numbertwo=newNumber(2);
System.out.println("Beginning:");
System.out.println("One="+one.getNumber());
System.out.println("Two="+two.getNumber());
//Assigntwotoone
two=one;//在这里two这个句柄的值(即某个对象的地点)改成one这个句柄的值了.从而two和one指同时//向one之前指向的谁人内存单位(对象).而two之前指向的谁人对象如今为没有句柄毗连的对象了.大概要被渣滓搜集
System.out.println("
Afterassigningtwotoone:");
System.out.println("One="+one.getNumber());
System.out.println("Two="+two.getNumber());
//Changethevalueoftwo
two.setNumber(3);//two和one指向统一个单位,以是他对改单位的改动,one能感知.
System.out.println("
Aftermodifyingtwo:");
System.out.println("One="+one.getNumber());
System.out.println("Two="+two.getNumber());
}
}
运转了局:
Beginning:
One=1
Two=2
Afterassigningtwotoone:
One=1
Two=1
Aftermodifyingtwo:
One=3
Two=3
Pressanykeytocontinue...
java老手和进修c++的一点感觉,若有不合错误的地方,还看指出.
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。 |
|