Class A:
class A {
public:
virtual void foo() const;
};
Class B:
class B : public A {
public:
void foo() const override;
};
public class A {
public A() {
foo();
}
public void foo() {
System.out.println("A");
}
}
public class B extends A {
private String bar;
public B() {
bar = "bar";
}
@Override
public void foo() {
System.out.println(bar);
}
}
然后我以以下方式实例化B:
A test = new B();
为什么编译器或者IDE不能警告我,在B类的foo方法中可能发生空指针异常呢?这个检查不难,有时非常有用。
System.out.println(bar.length());
。 - Andrei Fierbinteanu