A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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方法??

1 个回复

倒序浏览
Base调用了Sub类的test方法
java无法调用被遮盖的基类方法,你要是真想调用,不能用重写,用重载,也就是说在Sub类的test方法上加个参数.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马