java一个小问题,有关接口继承

学生一枚,最近在备考java,个人能力一般,因此特来求助大家,以下题目:

第一题

有以下代码:
interface I {
void setValue(int val);
int getValue(); }
以下哪段代码能编译:

A. Interface A implements I { void increment();
}
B. abstract class C implements I {
void setValue(int val) { value = val; } int getValue() { return val; }
}
C. class A extends I { void increment();
}
D. class A extends I { int value;
void setValue(int val) { value = val; }
int getValue() { return val; } }
官方答案:B

我有以下疑惑:

  1. 接口中和实现类中好像都没有public关键字,这允许嚒?

  2. B显然不对吧。。那个value是怎么回事?

第二题

关于这段代码:
public class Test { private int i = f(); private int j = 10; private int f() {
return j; }
public static void main(String args[]) {
System.out.println((new Test()).i); }
}
以下哪句是正确的?
A. 由于在main中访问了Test的私有的变量而不能编译 
B. 由于成员变量定义初始化时的顺序错误而不能编译 
C. 通过编译,打印出0
D. 通过编译,打印出10
官方答案:B

我的考虑:先不考虑在IDE运行情况下,纯分析:我认为i初始化的时候本来是0 ,而这个时候j还应该是0,这个时候返回0
另外,这个函数会有函数变量声明提升么(像JS那样)

阅读 2.9k
1 个回答

第1题 答案B估计出题老师疏忽了 忘了加成员变量value的代码,也可能是故意省略了
第2题 表示正确答案是C

我怀疑出题老师的脑子有点问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题