代码见下:
http://www.i2i.org.cn/webexhibit/09251.jpg
http://www.i2i.org.cn/webexhibit/09252.jpg
http://www.i2i.org.cn/webexhibit/09253.jpgmain中的f();和g(),为什么前者操作的是被隐藏的n,后者操作的是重新定义的n?

解决方案 »

  1.   


    父类只能操作对父类成员进行操作,因为只有double 类型的n可以操作,当然是操作 double  类型的n了,
    子类既能从父类那继承成员,同时又有自己的成员,当成员和父类的名字一样时,则“覆盖“了父类的成员了,b.n 这里操作的就是自己本身的n ,而不是父类继承的n ,因为父类的n被”隐藏“掉了。
      

  2.   

    前面一篇里我也跟你说了,当成员和父类的名字一样时,则“覆盖“了父类的成员了.比如:脯乳动物是A类,它有叫声的属性n,狗(B)继承A,它也定义了叫声的属性n,狗有自己的叫声("wowo"),你A再怎么改叫声的属性n影响不到狗的叫声.不知道这个比喻恰当吗?你懂吗?
      

  3.   

    我知道了,如果一个函数f()里面比如要操作一个叫n的变量,先看一下定义f()的类里面有没有声明这个变量,如果有就用本类里的。如果没有会到别的类去找(比如父类)。