|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
来谈谈protected会见权限成绩。看上面示例1:
Test.java
classMyObject{}
publicclassTest{
publicstaticvoidmain(String[]args){
MyObjectobj=newMyObject();
obj.clone();//Compileerror.
}
}
此时呈现上文提到的毛病:ThemethodclonefromthetypeObjectisnotvisiuable.
我们已分明Object.clone()是protected办法。这申明,该办法能够被同包(java.lang)下和它(java.lang.Object)的子类会见。这里是MyObject类(默许承继java.lang.Object)。
一样Test也是java.lang.Object的子类。可是,不克不及在一个子类中会见另外一个子类的protected办法,只管这两个子类承继自统一个父类。
再看示例2:
Test2.java
classMyObject2{
protectedObjectclone()throwsCloneNotSupportedException{
returnsuper.clone();
}
}
publicclassTest2{
publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{
MyObject2obj=newMyObject2();
obj.clone();//CompileOK.
}
}
这里,我们在MyObject2类中掩盖(override)父类的clone()办法,在另外一个类Test2中挪用clone()办法,编译经由过程。
编译经由过程的缘故原由不言而喻,当你在MyObject2类中掩盖clone()办法时,MyObject2类和Test2类在统一个包下,以是此protected办法对Test2类可见。
剖析到这里,我们在回想一下Java中的浅复制与深复制文中,章节2.2中的声明,②在派生类中掩盖基类的clone()办法,并声明为public。如今分明这句话的缘故原由了吧(为了让别的类能挪用这个类的clone()办法,重载以后要把clone()办法的属性设置为public)。
上面再来看示例3:
Test3.java
package1
classMyObject3{
protectedObjectclone()throwsCloneNotSupportedException{
returnsuper.clone();
}
}
package2
publicclassTest3extendsMyObject3{
publicstaticvoidmain(Stringargs[]){
MyObject3obj=newMyObject3();
obj.clone();//Compileerror.
Test3tobj=newTest3();
tobj.clone();//ComplieOK.
}
}
<p>
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点 |
|