内部类实现接口疑问!帮忙分析一小段代码,该怎么解决
阅读
此段代码来自于Java编程思想!
下面有2种方法实现多重继承。
我对下面的第2种方法(产生内部类)不理解,为什么“return new B(){};”就可以了。
都不知道这个接口怎么被实现了,之前我只知道好像这是普通匿名类的写法。
我很菜,望大虾详细解说!谢谢!
- Java code
interface A{} interface B{} class X implements A,B{} //状况1 class Y implements A{ //状况2 B makeB(){ return new B(){}; //{} 造成 内部类 ;这个地方理解不了 } } public class test { static void tackA(A a){} static void tackB(B b){} public static void main(String[] args) { X x=new X(); Y y=new Y(); tackA(x); tackA(y); tackB(x); tackB(y.makeB()); } }
------解决方案--------------------
------解决方案--------------------
- Java code
interface A{} interface B{} class X implements A,B{} //状况1 class Y implements A{ //状况2 B makeB(){ return new B(){}; //{} 造成 内部类 ;这个地方理解不了 } } public class test { static void tackA(A a){} static void tackB(B b){} public static void main(String[] args) { X x=new X(); Y y=new Y(); tackA(x);//使用tackA(A a),X是A的实现, tackA(y);//使用tackA(A a),Y是A的实现, tackB(x);//使用tackB(B b),x是B的实现, tackB(y.makeB());//使用tackB(B,b),虽然Y没有实现B,但是其中makeB方法返回了B(new B()) } }
------解决方案--------------------
------解决方案--------------------
我也正在看这本think in ,我的理解就是一个有返回类型的方法,而且返回的是个对象,并且这个对象里面可以写成员和方法。
阅读
上一篇:考考你对super的理解(进进) 下一篇:返回列表