Principles
public class Super {
// Broken - constructor invokes an overridable method
public Super() {
overrideMe();
}
public void overrideMe() {
}
}
public final class Sub extends Super {
private final Date date; // Blank final, set by constructor
Sub() {
date = new Date();
}
// Overriding method invoked by superclass constructor
@Override public void overrideMe() {
// This will fail in the constructor of the Super class.
System.out.println(date);
}
public static void main(String[] args) {
Sub sub = new Sub();
sub.overrideMe();
}
}
Summary
Effective Java 17 Design and document for inheritance or else prohibit it,布布扣,bubuko.com
Effective Java 17 Design and document for inheritance or else prohibit it
原文:http://www.cnblogs.com/haokaibo/p/3595924.html