黑马程序员技术交流社区

标题: 多态弊端:只能用父类引用访问父类的成员? [打印本页]

作者: Geek_001    时间: 2014-6-21 17:32
标题: 多态弊端:只能用父类引用访问父类的成员?
本帖最后由 Geek_001 于 2014-6-22 07:39 编辑

不知道什么意思?

作者: Running    时间: 2014-6-21 17:38
多态的好处:多态的出现大大提高了程序的扩展性。
   
多态的弊端: 提高了扩展性,但是只能使用父类的引用访问父类中的成员。
      

作者: 崔湖尧    时间: 2014-6-21 18:13
父类的引用中只记录了自身的成员变量和成员函数,并没有保存子类的特有信息,即父类不知道子类特有成员的存在,因此不能访问子类的特有成员
作者: 姿_`态    时间: 2014-6-21 18:26
/*
  父类引用,只能访问父类中定义的成员,否则会报错。
*/

class Test1
{
        public static void main(String[] args)
        {
                Demo d = new Demo2();//父类引用指向子类对象;
                d.show2();//错误,父类中没有找不到这个方法。
                d.show();//正确
        }
}
class Demo
{
        void show()
        {}

}
class Demo2 extends Demo
{
        void show()
        {}
        void show2()
        {}
}

作者: Geek_001    时间: 2014-6-21 19:31
姿_`态 发表于 2014-6-21 18:26
/*
  父类引用,只能访问父类中定义的成员,否则会报错。
*/

父类引用指向子类对象时,只可以访问父类中已经存在的方法,父类中不存在的方法不可以访问,是吗?
作者: 姿_`态    时间: 2014-6-21 19:33
Geek_001 发表于 2014-6-21 19:31
父类引用指向子类对象时,只可以访问父类中已经存在的方法,父类中不存在的方法不可以访问,是吗? ...

是的,因为这个是编译看左边,也就是看父类,如果父类没有的话,就会报错
作者: Geek_001    时间: 2014-6-21 19:35
姿_`态 发表于 2014-6-21 19:33
是的,因为这个是编译看左边,也就是看父类,如果父类没有的话,就会报错 ...

额,明白了,多谢!
作者: 姿_`态    时间: 2014-6-21 19:36
Geek_001 发表于 2014-6-21 19:35
额,明白了,多谢!

不客气 ,共同学习,嘿嘿
作者: Geek_001    时间: 2014-6-21 19:36
Running 发表于 2014-6-21 17:38
多态的好处:多态的出现大大提高了程序的扩展性。
   
多态的弊端: 提高了扩展性,但是只能使用父类的引 ...

这算是自己复习吗?




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