问题描述
大神 ,请问一下这个几个supper所代表的的是哪个对象public class A extends D{ protected class B implements K { public C c= new C() { public void med1() { supper //code } } public void med2() { supper //code } } public void med3() { supper //code }}
解决方案
是super吧...public C c= new C() { public void med1() { super //这个super指的就是C这个类,这时的new C(){...}实际上生成了一个继承自C的匿名类,所以super指的是C //code } } med2()中的super指的应该是Object,因为B类没显示继承任何类,所以super指向隐式继承的Object类med3()中的super指向的是D,因为A类显示继承自D
解决方案二:
虽然不太清楚,但是可以用编译器debugger,看一下super生成的对象是不是一样,就知道了。debugger下,好像每个生成的对象都会在类名后跟一个数字,看看这几个数字和对象是不是相同,即可判断super是那个了。用编译器debugger看看super的值,即可
时间: 2024-10-27 06:29:15