猿问

下面这个简单的程序验证匿名内部类的多态属性,但出现错误。

错误: 匿名内部类其实也就是继承一个类,那按照多态性,不是编译器不是应该找到子类覆盖的中的 innerF ( ) 吗?


D:\java_exercise>javac AnonymousInnerClass5.java
AnonymousInnerClass5.java:25: 错误: 此处不允许使用 '空' 类型

                            System . out .println (aic . f ( "as"). innerF ( ) ) ;

代码如下:

class B 
{
        void innerF ( ) 
        {
         
        }
}
public class AnonymousInnerClass5
{       
        public B f ( String s )
        {
                return new B ( )
                {
                        String ss = s ; 
                        @Override void innerF ( ) 
                        {
                                System . out .println (ss) ;
                        }
                         
                };
        }
        public static void main (String [ ] args)
        {
                AnonymousInnerClass5 aic = new AnonymousInnerClass5 ( ) ;
                System . out .println (aic . f ( "as"). innerF ( ) ) ;   
        }
}
吃鸡游戏
浏览 588回答 1
1回答

当年话下

一切都是正常的,但是 innerF() 方法的返回值的 void,你却用它作为 System.out.println 的参数,这里就错了。 这一行应该是 aic.f("as").innerF() ,外面不应该再有 System.out.println 了。
随时随地看视频慕课网APP

相关分类

Java
我要回答