csdn_peter
csdn_peter
2016-09-08 10:19
采纳率: 100%
浏览 4.8k
已采纳

子类继承父类 父类调用子类的方法

图片说明

我现在有这几个类,A B1 B2是接口,A是B1 B2的父类,B1 B2是C1 C2父类,
现在我用A a = new C1(); (a as C1).方法1(); 可以调用子类方法。如果父类不转为子类,还有什么方法父类可以访问到子类的方法。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • Gandalfool
    Gandalfool 2016-09-08 10:27
    已采纳

    不行吧 A指针强行转换成C1类型也只能访问C1中从A里继承来的东西 想访问子类的方法的话 把这个方法定义成虚函数不就可以了么

    点赞 评论
  • qq_29594393
    当作看不见 2016-09-08 11:10

    首先B1 B2 是接口的话,那么A也是接口,A a =new A();这一句就是错的,无法用new声明一个接口对象

    点赞 评论
  • liyantianmin
    colie_li 2016-09-08 12:57

    如果父类不转为子类
    这句话是不准确的,这个是多态,实际上a是子类的实例并父类的,父类引用指向子类对象

    点赞 评论
  • wojiushiwo945you
    毕小宝 2016-09-08 13:08

    这是不允许的,父类只能调用自己的方法,但是反过来,子类除了可以调用自己的方法,还可以调用继承自父类的方法。

    点赞 评论
  • junbujianwpl
    WarmSword 2016-09-08 14:54

    A a = new C1(); (a as C1).方法1(); 这种情况下的方法调用是可能会失败的 类型转换向上是安全的 向下是不确定的 即会出现失败的情况

    感觉楼主的意思可能是重写的含义 如果是java语言的话 所有函数默认是虚函数 在父类中加一个方法 在子类中实现这个方法 用父类的指针指向子类的对象 调用的就是子类的方法 如果是c++ 需要将函数加上virtual修饰关键词 。。。不知道我说清楚没有

    点赞 评论
  • waterhexuan
    编天码地 2016-09-08 15:21

    一个对象能调用什么方法取决于它本质是什么 能转化成哪个类的对象说明它本身就是那个类

    点赞 评论
  • java__project
    萌神30号 2016-09-08 16:49

    这个结构很像“集合”的结构。顶层是Collection接口,然后分为List和Set两个接口,然后List下又有ArrayList,LinkedList和Vector。Set下又有HashSet,TreeSet。
    而多态的弊端就是父类不能使用子类特有的方法。强行向下转型,我认为还是子类在用自己的方法。另外不太清楚,是否可以用反射获取到子类的方法

    点赞 评论
  • ganyao939543405
    OSTCB 2016-09-11 02:54

    可以明确的告诉你,已经没有办法访问到父类的方法了

    点赞 评论

相关推荐