今天在CSDN上看一哥们的面试题如下:
一个抽象类Test1:
public abstract class test1 {
int i=0;
}
一个接口Test2:
public interface test2 {
int i=2;
}
问题:请在下面横线处填写代码分别输出test1和test2中变量i的值
public class test3 extends test1 implements test2 {
public void print()
{
__________________
__________________
}
public static void main(String[] args) {
test3 t=new test3();
t.print();
}
}
答案是:
public class Test3 extends Test1 implements Test2 {
public void print() {
// __________________
System.out.println(Test2.i);
// __________________
System.out.println(super.i);
}
public static void main(String[] args) {
Test3 t = new Test3();
t.print();
}
}
说明一下:我们在学习抽象类和接口时只注意到了方法的实现与否,而它们的成员变量同样也是有讲究的。抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。接口中一般不定义成员变量,如果非要定义也要是static final类型的,还要给它们赋初值,而且默认就是public static final类型的。