publicclassPrivateOverride{privatevoidf(){System.out.println("privatef()");}}publicclassDerivedextendsPrivateOverride{publicvoidf(){//thismethodisneverrun.System.out.println("publicf()");}}publicstaticvoidmain(String[]args){//instantiateDerivedandassignitto//objectpooftypePrivateOverride.Private
publicclassPrivateOverride{privatevoidf(){System.out.println("privatef()");}}publicclassDerivedextendsPrivateOverride{publicvoidf(){//thismethodisneverrun.System.out.println("publicf()");}}publicstaticvoidmain(String[]args){//instantiateDerivedandassignitto//objectpooftypePrivateOverride.Private
在Javatutorial"DefininganInterface",它说Ifyoudonotspecifythattheinterfaceispublic,yourinterfacewillbeaccessibleonlytoclassesdefinedinthesamepackageastheinterface.但是,这个interfacePPInterface{voidfoo();voidbar();}classNewClassimplementsPPInterface{voidfoo(){}voidbar(){}}在NewClass中生成编译器错误,因为我正在尝试分配较弱的访问
在Javatutorial"DefininganInterface",它说Ifyoudonotspecifythattheinterfaceispublic,yourinterfacewillbeaccessibleonlytoclassesdefinedinthesamepackageastheinterface.但是,这个interfacePPInterface{voidfoo();voidbar();}classNewClassimplementsPPInterface{voidfoo(){}voidbar(){}}在NewClass中生成编译器错误,因为我正在尝试分配较弱的访问
如果不是:privateJButtontheButton;我这样定义一个字段:JButtontheButton;有什么区别? 最佳答案 包。它们对同一包中的其他类可见。FWIW,我通常在这些上使用我自己的无操作@Package注释,只是为了清楚地表明我知道我在做什么——我不只是忘记了一些东西。尽管它是默认设置,但包访问在高质量代码中的使用可能比其他三种可能性中的任何一种都少——有一个很大的异常(exception):在某些风格的单元测试中,希望能够访问通常是私有(private)的方法或字段。提供访问的一种方法是将它们设置为包访问,
如果不是:privateJButtontheButton;我这样定义一个字段:JButtontheButton;有什么区别? 最佳答案 包。它们对同一包中的其他类可见。FWIW,我通常在这些上使用我自己的无操作@Package注释,只是为了清楚地表明我知道我在做什么——我不只是忘记了一些东西。尽管它是默认设置,但包访问在高质量代码中的使用可能比其他三种可能性中的任何一种都少——有一个很大的异常(exception):在某些风格的单元测试中,希望能够访问通常是私有(private)的方法或字段。提供访问的一种方法是将它们设置为包访问,
在谈到构造函数时,我试图理解为什么类成员的可访问性之间存在差异。考虑以下示例:classA{staticclassB{privateB(Strings){}privatevoidfoo(){}}staticclassCextendsB{publicC(Strings){super(s);//callB(String),whichisprivate,andobviouslyaccessible}voidbar(){foo();//compilationerror(symbolunknown),asB.foo()isprivate}}}A的私有(private)成员,由于是私有(priva
在谈到构造函数时,我试图理解为什么类成员的可访问性之间存在差异。考虑以下示例:classA{staticclassB{privateB(Strings){}privatevoidfoo(){}}staticclassCextendsB{publicC(Strings){super(s);//callB(String),whichisprivate,andobviouslyaccessible}voidbar(){foo();//compilationerror(symbolunknown),asB.foo()isprivate}}}A的私有(private)成员,由于是私有(priva
“对于接口(interface)中的私有(private)方法的支持曾被考虑包含在JavaSE8中,作为增加对Lambda表达式支持的努力的一部分,但为了更好地专注于JavaSE8的更高优先级任务而被撤回。它是现在提议支持私有(private)接口(interface)方法,从而使接口(interface)的非抽象方法能够在它们之间共享代码。”http://openjdk.java.net/jeps/213的规范如是说并在错误报告中说https://bugs.openjdk.java.net/browse/JDK-8071453.但我真的想不出任何必要的用例,即使上面给出了简短的解释。
“对于接口(interface)中的私有(private)方法的支持曾被考虑包含在JavaSE8中,作为增加对Lambda表达式支持的努力的一部分,但为了更好地专注于JavaSE8的更高优先级任务而被撤回。它是现在提议支持私有(private)接口(interface)方法,从而使接口(interface)的非抽象方法能够在它们之间共享代码。”http://openjdk.java.net/jeps/213的规范如是说并在错误报告中说https://bugs.openjdk.java.net/browse/JDK-8071453.但我真的想不出任何必要的用例,即使上面给出了简短的解释。