1. public class Base {
    2. Base(){
    3. priate();
    4. }
    5. String className="Base";
    6. public void priate(){
    7. System.out.println("Base "+className);
    8. }
    9. }
    10. class Sub extends Base{
    11. String className="sub";
    12. @Override
    13. public void priate() {
    14. System.out.println("ccc "+className);
    15. }
    16. }
    17. class Tests{
    18. public static void main(String[] args) {
    19. Base sub = new Sub();
    20. }
    21. }

    程序运行结果:

    1. ccc null
    1. <br /> 上述程序中,应用了多态(父类的引用指向子类的对象)。当程序运行时候,会先执行父类的构造器,此时发现需要调用priate()方法,因为多态的原因,回去调用子类的priate()方法。而此时,子类中的普通域并没有初始化,所以就会为null