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

查看:169
本文介绍了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那样)

解决方案

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

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

这篇关于java一个小问题,有关接口继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆