繁体   English   中英

抽象私人内部阶级

[英]abstract private inner class

我正在准备Oracle考试,但对以下问题的回答不正确:

组合摘要private对于内部类是合法的

答案是正确的,我回答是错误的,因为我找不到用于抽象私有内部类的用例,这些内部私有类不能从子类中覆盖。 有人可以解释一下,为什么/为什么要用这种语言吗?

Java语言规范定义私有成员的含义如下:

否则,成员或构造函数将被声明为私有,并且仅当且仅当它出现在封装成员或构造函数的声明的顶级类(第7.6节)的主体内时,才允许访问。

也就是说,可以从驻留在同一源文件中的任何代码访问(并且可以将其私有化)私有内部类。 例如,您可以执行以下操作:

public class C {

   private abstract class A {
       abstract void foo();
   }

   void bar() {
       new A() {
           @Override void foo() {
               // do something
           }
       }
   }
}

有趣的是,不能重写声明为private的方法,但是可以重写private类中的方法。

组合摘要private对于内部类是合法的

有点令人困惑,但是规则是内部类不能具有抽象的私有方法。

如果考试说的相反,那就错了。

更新 :如果您的意思是在类声明中,则答案为真,请检查此有效代码段...

public class MyOuter {
    abstract private class MyInner {
        //the combination abstract private is legal for inner classes: TRUE
    }
}

要知道为什么或何时使用它,请查看建议的链接 ,对此有很好的解释 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM