java一个小问题,有关接口继承
本文介绍了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
我有以下疑惑:
接口中和实现类中好像都没有public关键字,这允许嚒?
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那样)
解决方案
第1题 答案B估计出题老师疏忽了 忘了加成员变量value的代码,也可能是故意省略了
第2题 表示正确答案是C
我怀疑出题老师的脑子有点问题
这篇关于java一个小问题,有关接口继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文