黑马程序员技术交流社区

标题: 一个无法解释的问题 大神们求解答 [打印本页]

作者: 一休    时间: 2015-6-11 20:43
标题: 一个无法解释的问题 大神们求解答
class Fu
{
        private int a = 1;
        public int get(){
                return this.a;
        }
}
class Zi extends Fu
{
        int a = 2;
}


class Test
{
        public static void main(String[] args)
        {
                Zi z = new Zi();
                System.out.println(z.get());
        }
}


输出结果是1   不是谁调用方法this就是指谁吗    应该输出2呀
作者: hieiyukina    时间: 2015-6-11 21:24
= =总觉得这种问题在真实做项目时候 就不会这么设计 知道有这么回事就行了吧
作者: GoldMan    时间: 2015-6-11 21:54
你并没有重写父类方法
作者: q19871127    时间: 2015-6-11 22:02
get()是父类的方法  那个里面的this调用的就是自己a  除非重写get方法
作者: duzhi409    时间: 2015-6-12 00:04
子类继承父类,子类调用get()时,因为子类中并没有该方法,会去父类中找,在父类中找到get()方法,就近原则,返回的就是a=1,
如果想打印a=2,在子类中重写父类的get()就可以了,也就是在子类中加入以下方法:
public int get(){
                return a;
作者: zheng72566    时间: 2015-6-12 07:50
来学习学习




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