代码查错

2018-01-01  本文已影响0人  骇客与画家
abstract class Name {
    private String name;
    public abstract boolean isStupidName(String name) {}
} 
答案:错。abstract method 必须以分号结尾,且不带花括号。
public class Something {
    void doSomething() {
        private String s = "";
        int I = s.length();
    }
}
答案: 错。局部变量前不能放置任何访问修饰符 (private,public,和 protected)。final 可以用来修饰局部变量

(final 如同 abstract 和 strictfp,都是非访问修饰符,strictfp 只能修饰 class 和 method 而非variable)。
public class Something {
    private abstract String doSomething();
}
答案: 错。abstract 的 methods 不能以 private 修饰。abstract 的 methods 就是让子类implement(实现)具体细节的,怎么可以用 private 把 abstract method 封锁起来呢? (同理,abstract method 前不能加 final)。
public class Something {
    public int addOne(final int x) {
        return ++x;
    }
} 
答案: 错。int x 被修饰成 final,意味着 x 不能在 addOne method 中被修改。
public class Something {
    public static void main(String[] args) {
        Other o = new Other();
        new Something().addOne(o);
    }
    public void addOne(final Other o) {
        o.i++;
    }
}
class Other {
    public int i;
} 
答案: 正确。在 addOne method 中,参数 o 被修饰成 final。如果在 addOne method 里我们修改了 o 的 reference(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是 o 的 member vairable(成员变量),而 o 的 reference 并没有改变。

final关键字

final修饰变量

final修饰方法

2018-01-01 14-23-22屏幕截图.png

final修饰类

static final常量

上一篇 下一篇

猜你喜欢

热点阅读