82、public class Something
{ public static void main(String[] args)
{
Other o = new Other(); new Something().addOne(o);
}
public void addOne(final Other o)
{ o.i++; }}
class Other { public int i;}
和上面的很相似,都是关于final的问题,这有错吗?
正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference,(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。
87、 interface A{ int x = 0;}
class B{ int x =1;}
class C extends B implements A {
public void pX(){ System.out.println(x); }
public static void main(String[] args) { new C().pX(); }
}
错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。