我的一个同事正在上面向对象编程简介课,他的教授问了一个讨论问题:Whyaremanydevelopersopposedtousingthe"protected"modiferon/withinclasses?当午餐时提出这个问题时,我和我的同事想不出为什么有人可能反对在类(class)。抛开问题的前提(假设许多开发人员实际上反对protected修饰符;是吗?),我们试图找出原因。就我个人而言,我唯一一次在类上使用protected访问修饰符是在我编写可能想在测试环境中补充的代码时。例如,我可能会编写一个没有调试信息的基类,然后创建一个新类进行测试,从基类继承并覆盖其方法,以在基方法调
在Java8中,在包a中有一个父类(superclass)Super和在包b中有一个子类Sub>,他有一个内部类SubInner://Super.javapackagea;publicabstractclassSuper{privatelongvalue;protectedfinalvoidsetValue(longvalue){this.value=value;}}//Sub.javapackageb;publicclassSubextendsSuper{publicvoidfoo(){newSubInner().foo();}privateclassSubInner{voidfoo
关键字protected授予对同一包和子类中的类的访问权限(http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)。现在,每个类都有java.lang.Object作为父类(superclass)(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)。因此我得出结论,每个类都可以访问java.lang.Object的方法,即使它们是protected。看看下面的例子:publicclassTestclass{publicObje
我知道这个论坛之前有人问过这个问题,但我会再问一次,因为我没有看到任何好的答案(到目前为止)。这里是:packagea;publicclassA{protectedinta;}packageb;publicclassBextendsA{}packagec;publicclassCextendsB{publicvoidaccessField(){Aancient=newA();ancient.a=2;//A-Thatwouldn'twork.a=2;//B-Thatworks.}}为什么条款A)不起作用?对子类C中父类(superclass)对象古代访问的这种限制背后的合理性是什么?谢谢
谁能给我解释一下protected/publicInner类之间的区别是什么?我知道要尽可能避免使用public内部类(如article中所述)。但据我所知,使用protected或public修饰符没有区别。看看这个例子:publicclassFoo1{publicFoo1(){}protectedclassInnerFoo{publicInnerFoo(){super();}}}...publicclassFoo2extendsFoo1{publicFoo2(){Foo1.InnerFooinnerFoo=newFoo1.InnerFoo();}}...publicclassBar
目录一.前言二.分析原因三.解决问题3.1将现在的数据库全部卸载3.2直接修改数据库密码方法一.用setpassword命令 方法2:用mysqladmin 方法3:用update直接编辑user表 方法4:忘记密码处理方式一.前言 在我们开发中肯定会和数据库打交道,我的电脑发生点小问题,重做系统之后自己的环境和配置需要重新配置,数据库也是重新下载,在我安装数据库之后,再打开Navicat本地数据库时报错1045-Accessdeniedforuser"root"@localhost(usingpassword:yes)我们的数据库密码过期了,要知道我的数据库新下载,新配置的环境变量,对于
abstractclassBase{protectedabstractvoida();}classChildextendsBase{@Overridepublicvoida(){//whyisthisvalid}}为什么我们不能降低能见度但可以提高它?我还需要实现模板模式,其中可见的公共(public)方法只能是基类。例子:abstractclassBase{publicvoidcallA(){//dosomeimportantstuffa();}protectedabstractvoida();}classChildextendsBase{@Overridepublicvoida()
这个问题在这里已经有了答案:Whydoesthe"protected"modifierinJavaallowaccesstootherclassesinsamepackage?(6个答案)关闭7年前。在他的书中,HerbertSchildt在第172页(第3段)中说“protected仅在涉及继承时适用。”。在第228页中,表9-1显示可以从同一包中的非子类访问protected成员。以下代码有效并支持表9-1中的信息。Class1.java:packageMypack;publicclassClass1{protectedpro=1;publicClass1(){System.out
我正在编写代码来创建对象、克隆对象,然后比较两者。所讨论的对象Octagon是对象GeometricObject的扩展publicclassOctagonextendsGeometricObjectimplementsComparable,Cloneable{privatedoubleside;publicOctagon(doubleside){this.side=side;}publicObjectclone()throwsCloneNotSupportedException{OctagonoctClone=(Octagon)super.clone();returnoctClone;
我正在维护一些遗留的JavaLDAP代码。我对LDAP几乎一无所知。下面的程序基本上只是将用户ID和密码发送到LDAP服务器,如果凭据正确则接收回通知。如果是,它会打印出从LDAP服务器收到的LDAP属性,如果不是,它会打印出异常。如果输入错误密码,一切正常。抛出“无效凭据”异常。但是,如果将空白密码发送到LDAP服务器,身份验证仍将进行,LDAP属性仍将返回。这种不愉快的情况是由于LDAP服务器允许空白密码,还是需要调整下面的代码,以便将空白密码以这种方式提供给LDAP服务器,从而被拒绝?我确实进行了数据验证。我在测试环境中将其取下以解决另一个问题并注意到了这个问题。我不想在数据验证