3
public class Test  {  

    public static void main(String args[]){
        Test t = new Test();
        t.inner();

    }
    public final void print() { 
        System.out.print("main"); 
    }      

    public void inner() {       
        class TestInner {           
            void print(){
                System.out.print("sub");                
            }

        }
        TestInner inner =new TestInner();
        inner.print();
        print();
    }
}

输出:子主

问题:Test 类中的 print() 方法是最终方法,本地类可以访问,但本地类仍然可以再次定义 print() 方法怎么办?

如果我们在超类中声明 private final x(),它在子类中是不可访问的,所以我们可以在子类中定义 x()。

如果我们在超类中声明 public final x(),它可以在子类中访问,所以我们不能在子类中定义 x()。

谁能解释一下?

4

3 回答 3

6

内部类没有覆盖该final方法。

内部类必须扩展外部类才能覆盖外部类的方法。

这两个类是独立的,彼此无关,除了外部类包含内部类。

于 2012-12-22T18:43:39.433 回答
2

因为 TestInner 类没有扩展 Test 类,所以它有自己独立的命名空间。

它没有任何技巧,它不会覆盖测试类的打印方法。

于 2012-12-22T18:44:33.523 回答
0

内部类没有覆盖 final 方法。

内部类必须扩展外部类才能覆盖外部类的方法。

这两个类是独立的,彼此无关,除了外部类包含内部类。

于 2013-07-21T03:49:39.920 回答