1.题目:
现有:
public class Passer{
static final int X=5;
public static void main(String [] args){
new Passer().go(X);
System.out.print(X);
}
void go(int X){
System.out.print(X++);
}
}
结果是什么?
A 55 B 56 C 65 D 66
答案:A
真的是,又掉坑里去了,悲伤逆流成河都不能表达我内心的悲伤。static final int X=5;其实这句代码已经提醒我们这里有坑了,用final关键字修饰的变量一经赋值就不能再改变了。 new Passer().go(X);中指的是将static final int X=5;的值给了int X,在函数go中对int X变量进行怎样更改都不会影响 final int X的值。 System.out.print(X++);因为是后置自增所以先输出后自增,输出5, System.out.print(X);调用go函数不会影响它的值,所以还是输出5;故答案为A。
2.static关键字可以修饰类,该类就是静态内部类。static修饰类时就只有这一种情况哦。
3.
class Super {
public Integer getLenght() {
return new Integer(4);
}
}
public class Sub extends Super {
public Long getLenght() {
return new Long(5);
}
public static void main(String[] args) {
Super sooper = new Super();
Sub sub = new Sub();
System.out.println(sooper.getLenght().toString() + "," + sub.getLenght().toString() );
}
}
输出是什么?
A 4,4 B 4,5 C 5,4 D 编译错误
答案:D
这题涉及的时方法重写的概念,不得不说细节的重要性,方法重写要求两个方法的返回值类型、方法名、参数列表相同,对于访问权限,子类的权限应大于或等于父类中的权限,最好跟父类权限一致较好。这题 public Integer getLenght()和 public Long getLenght() 你看出哪个地方的错误了吗,对,就是返回值类型,所以本题会出现编译错误。
4.子类可以通过super关键字调用父类的方法,属性(非私有的哦)
宝剑锋从磨砺出,梅花香自苦寒来。--冯梦龙
加油!小芳同学