class Base { public Base() { test(); } public void test() { System.out.println("将被子类重写的方法");//1号test方法 } } public class Sub extends Base { private String name; public void test() { System.out.println("子类重写父类的方法");//2号test方法 } public static void main(String[] args) { Sub s = new Sub(); } } 当创建Sub对象时,会先执行Base类中的Base构造器,而Base构造器中调用了test方法,注意此时它并不是调用//1号test方法 而是调用//2号test方法 , 此时Sub对象的name属性是null,因此会引发空指针异常!!!因此,不要在父类构造器中调用被子类重写的方法 !!!!希望对你有所帮助!!!!!!{:soso_e100:} |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |