你的代码就有问题,我实例验证过,在你的代码中只有把局部内部类代码放在创建内部类对象的代码之上才能编译通过。
还有你的这段代码中的( Dog.bark(); )是绝对有问题的!不能这样调用,因为(类名.方法名)调用必须是一个类中的静态方法才行;
那么问题来了:在内部类之外访问内部类之中的内容只能是生成内部类的实例才行(如果不是static的内部类,必须依赖外部类的实例才能生成)。这跟加了静态就能用类名直接调用的说法有冲突,类的规则肯定优先于方法的规则,所以你问的第二段代码才会提示编译报错;
那么接着你的第三段代码的问题,局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。像局部变量一样,不能被public, protected, private和static修饰。
以上是我在新年之夜亲手实验,和百度出来的,如有不同见解,欢迎指正
|