黑马程序员技术交流社区

标题: 关于奇葩的方法调用,我也不想研究这样的,看书看到的 [打印本页]

作者: guohuaxin    时间: 2015-7-31 23:32
标题: 关于奇葩的方法调用,我也不想研究这样的,看书看到的
class Base
{
        public Base()
        {
                test();                  //A
        }
        public void test()           //①号test方法
        {
                System.out.println("将被子类重写的方法");
        }
}
public class Sub extends Base
{
        private String name;
        public void test()        //②号test方法
        {
                System.out.println("子类重写父类的方法,"
                        + "其name字符串长度" +name.length());      //B
        }

        public static void main(String[] args)
        {
                //下面代码会引发空指针异常
                Sub s = new Sub();
        }
}

程序会报错。但是把B处的+name.length()去掉则正常运行,请问是哪个对象调用了②号test方法??

作者: wudigod12    时间: 2015-7-31 23:47
Base调用了Sub类的test方法
java无法调用被遮盖的基类方法,你要是真想调用,不能用重写,用重载,也就是说在Sub类的test方法上加个参数.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2