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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我自己理解成了4.......5

360截图20150304115819422.jpg (98.4 KB, 下载次数: 17)

360截图20150304115819422.jpg

9 个回复

倒序浏览
你两个都是z.num怎么也不会出现两种值呀,子类和父类有同名函数当然以子类为准了。
回复 使用道具 举报
Hsidar 发表于 2015-3-4 12:14
你两个都是z.num怎么也不会出现两种值呀,子类和父类有同名函数当然以子类为准了。 ...

那我可以拿子类覆盖父类来理解吗
回复 使用道具 举报
硫氢化铁 发表于 2015-3-4 12:34
那我可以拿子类覆盖父类来理解吗

这样也可以
回复 使用道具 举报
就算你这样写Fu z = new zi();结果也是一样 运行的类型是子类。你两个一样的怎么也不会出现不同的。
回复 使用道具 举报
你这里是直接生成子类对象,此时子类有,就在子类中找,没有时才去父类中,找当然是5了。如果是多态Fu f=new Zi();时,f.num=4,此时是用多态的规则,先去父类中初始化。
回复 使用道具 举报
本帖最后由 yangruijing 于 2015-3-4 14:42 编辑

子父类出现后类成员的特点:1.子父类中变量的特点:父类的成员变量私有化之后,子类依然继承,但不能直接访问。如果子类中出现非私有的同名成员变量时,自雷要访问本类中的变量用 this  ,要访问父类中的同名变量,用super,所以,在程序中用子类的对象调用同名的成员变量,访问的是子类中的成员变量,要想都访问到,可以这样写:
public class test1 {        int num=4;   
    }
public class test2 extends test1 {  
          int num=5;
}
public class demo {
        public static void main(String[] args) {
               // TODO Auto-generated method stub   
             test2 t2=new test2();
               System.out.println("num="+t2.num);   
             test1 t1=new test2();//多态,子类对象将自动向上转型
               System.out.println("num="+t1.num);
       }
}
这样运行结果输出的是5,4





回复 使用道具 举报
看不清啊 有大图吗
回复 使用道具 举报
yangruijing 发表于 2015-3-4 14:40
子父类出现后类成员的特点:1.子父类中变量的特点:父类的成员变量私有化之后,子类依然继承,但不能直接访 ...

这样啊,多谢啦
回复 使用道具 举报

没事,互帮互助,应该的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马