1、public static A method(),这句话的意思是B类中有个公有方法,是静态的,可被类直接调用,返回类型是一个接口A类型的,就相当于返回了int或者其他类型是一个道理,方法名为method
2、用return的原因就是因为你上面定义了返回类型是接口A类型的,所以你得返回一个A类型或其引用,对于void类型不用return的,但是对于有返回类型的方法,必须加上return返回你指定的类型(这里是A类型)。
3、new A()其实是使用了匿名内部类,你应该注意到了A()后有大括号,其中是实现A接口中的方法,因为你不能实例化一个接口,但是可以用这种方式(匿名内部类)来实例化接口(确切说是其子类)。
4、因为你这里的new A(){....}是作为方法的放回值存在的,返回的是A接口的类型对象或其引用,如果你.show()的话,那么返回的是这个调用的show方法的结果,就好比说,假设你这样做:A a = new A(){.....},在这里你就相当于调用了a.show(),,返回的是打印的语句,其实就是void,那么你不是和上面你指定返回A类型矛盾吗?所以不能加上.show()
5、对于A a = B.method(),因为B.method()的值是一个实现A的对象,那么将实现A的对象赋给A的引用a,就相当于我上面写的:A a = new A(){.....}。 |