草庐IT

private-inheritance

全部标签

java - 私有(private)构造函数和最终

为什么将只有私有(private)构造函数的类标记为最终类是一个好习惯?我的猜测是,它是为了让其他程序员知道它不能被子类化。 最佳答案 通常认为(例如JoshBloch和C#的设计者)将所有内容都标记为final是一种很好的做法,除非您有明确的理由不这样做。假设你的意思是类,你是正确的,只有私有(private)构造函数的类不能被子类化。因此,final可能被认为是多余的,但正如您所说,它具有文档值(value)。正如Marc所建议的,它也可能有助于优化。 关于java-私有(priva

java - 继承中的私有(private)方法

这是一个有趣的代码片段:publicclassSuperclass{publicstaticvoidmain(String[]args){Superclassobj=newSubclass();obj.doSomething();#prints"fromSuperclass"}privatevoiddoSomething(){System.out.println("fromSuperclass");}}classSubclassextendsSuperclass{privatevoiddoSomething(){System.out.println("fromSubclass");}}

java - 为什么要在类中声明变量私有(private)?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭9年前。Improvethisquestion伙计们,我首先要道歉,因为我确信这个问题已经在其他地方得到了回答——我只是找不到一个可以以我理解的方式解释它的答案!我正在学习MSc转换类(class),有一些基本的基础知识我仍在为此苦苦挣扎,包括这个-为什么将变量设为私有(private)更好。假设我有一个名为Person的Java类,它有一个打印方法。我可以这样创建和定义它:publicclassPerson{publicStringnam

java - 设计决策 : Why and when to make an interface private?

在设计决策中是否使用过私有(private)接口(interface)?如果是这样,原因是什么?您什么时候知道需要私有(private)接口(interface)? 最佳答案 顶级界面不能是私有(private)的。它只能有public或包访问。来自JavaLanguageSpecification,section9.1.1:"InterfaceModifiers":Theaccessmodifiersprotectedandprivatepertainonlytomemberinterfaceswhosedeclarationsa

java - 为什么参数的私有(private)字段在 Java 6 中对泛型方法可见,但在 Java 7 中不可见?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Type-parameterizedfieldofagenericclassbecomesinvisibleafterupgradingtoJava7publicclassTest{privateString_canYouSeeMe="yes";voidgenericMethod(They){Strings=hey._canYouSeeMe;}voidmethod(Testhey){Strings=hey._canYouSeeMe;}}当针对JDK1.6构建时,编译得很好,但针对1.7,在genericMet

java - jackson + Tomcat - java.lang.VerifyError : Cannot inherit from final class

我有一个在Tomcat6中运行的Java网络服务,它接受JSON输入。我正在尝试使用JacksonObjectMapper来解析输入的json。但是在初始化ObjectMapper对象时出现此错误16:08:13,616ERROR[[jersey]]Servlet.service()forservletjerseythrewexceptionjava.lang.VerifyError:Cannotinheritfromfinalclassatjava.lang.ClassLoader.defineClass1(NativeMethod)atjava.lang.ClassLoader.d

java - 我们如何测试包私有(private)类?

我正在阅读EffectiveJava一书,在Item13:Minimizetheaccessibilityofclassesandmembers中提到:Tofacilitatetesting,youmaybetemptedtomakeaclass,interface,ormembermoreaccessible.Thisisfineuptoapoint.itisacceptabletomakeaprivatememberofapublicclasspackage-privateinordertotestit,butitisnotacceptabletoraisetheaccessibi

java - 在复制构造函数中访问另一个对象的私有(private)字段——真的有问题吗?

在我的Java应用程序中,我有一些像这样的复制构造函数publicMyClass(MyClasssrc){this.field1=src.field1;this.field2=src.field2;this.field3=src.field3;...}现在Netbeans6.9对此发出警告,我想知道这段代码有什么问题吗?我的担忧:使用getter可能会引入不需要的副作用。新对象可能不再被视为原始对象的副本。如果建议使用getter,那么如果对新实例也使用setter不是更一致吗?编辑:实际警告是“访问另一个对象的私有(private)字段”,Netbeans提供的唯一可用操作是添加一个

java - 外部类访问包私有(private)方法

假设我的包org.jake中有一个类,它有一个具有默认访问权限(无修饰符)的方法。然后该方法仅在包内可见。但是,当有人收到我的框架的jar时,如何阻止他们编写一个新类,将其包声明为org.jake,并使用我所谓的不可见方法?换句话说,我能做些什么来防止这种情况发生吗? 最佳答案 你可以sealthepackage在你的jar文件中。虽然它不是防弹的。从安全的角度来看,最主要的是不要依赖访问修饰符等,真的。如果有人以不受限制的权限运行代码,他们将可以访问各种东西。访问修饰符确实有助于阻止人们不小心搬起石头砸自己的脚。如果有人愿意将类放

java - 令人困惑 "override a private method"

关于这段代码我有两个问题publicclassOverride{privatevoidf(){System.out.println("privatef()");}publicstaticvoidmain(String[]args){Overridepo=newDerived();po.f();}}classDerivedextendsOverride{publicvoidf(){System.out.println("publicf()");}}/**Output:privatef()*///:~1)函数f如何在Overridepo的引用上可见;2)为什么输出是“privatef()”