在Java中,类永远不能被限定为私有或受保护.它可以随时公开.很明显,毫无疑问.
但是,Java中的内部类可以使用private,protected或public中的任何修饰符指定.内部类也可以在单个块中定义,就像方法一样.在这种情况下,不能使用私有,公共或受保护的任何修饰符指定内部类.
编译以下简单程序没有错误,工作得很好.
package amazingjava;
final class Demo
{
public class Really
{
public class Quite
{
public class Surprising
{
@Override
public String toString()
{
return( "it really works !" );
}
}
}
}
}
final public class Main
{
public static void main(String[] args)
{
System.out.println( "It may be hard to believe, but " + new Demo().new
Really().new Quite().new Surprising().toString());
class Really
{
class Quite
{
class Surprising
{
@Override
public String toString()
{
return( "it really works !" );
}
}
}
}
System.out.println( "It may be hard to believe, but " + new Really().new
Quite().new Surprising().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
它产生以下输出.
可能很难相信,但它确实有效!
可能很难相信,但它确实有效!
现在,我的问题只是在上面的例子中main()方法中声明的内部类不能有任何修饰符.尝试使用任何修饰符private,protected或甚至public修改这些类会产生编译时错误!为什么?在这种情况下,编译器使用哪个默认修饰符?
在方法内定义的内部类被视为在该方法中声明的任何变量 - 这些变量是LOCAL.除了FINAL之外,局部变量或类不能具有任何修饰符.
在另一个类中定义的内部类被视为实例变量,因此实例类或变量可以是公共私有的或没有标识符.
| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |