首页 > 编程知识 正文

java父类的构造方法怎么写,java 父类引用其子类对象

时间:2023-05-04 15:55:30 阅读:181597 作者:2291

Java多态性的三个必备条件:

1、继承

2、子类重写父类的方法

3、父类引用指向子类对象

让我们看一个例子

输出结果如下。

得出结论: Father c=new Child () )在c眼中只能看到child中的father属性!

如果满足Java多态性的三个条件,则可以看到c.eat ()调用实际上是子类的eat (因为(子类覆盖了父类的方法) )。

但是,c.age仍然调用父类的age (属性/变量中不存在重写和重写)、c.play )无法通过编译。

但是,在java引用中,Father不仅规定了c如何访问内存,还规定了可以访问内存空间的大小。

Father实例对象的大小为两行,而Child实例对象为三行。 在这里简单地数值化。

因此,虽然c指向Child实例对象,但即使之前由Father限定,也只能访问两行数据。 也就是说,c完全无权访问Child类的age! 因为只能访问Father系的age,所以输出40

Parent的方法表有三行,Child的方法表有四行,c指向Child类的实例对象。

虽然对象也有一个指向Child类的指针的方法表,但由于c被限定为Father,因此通过c也只能访问Child方法表的前三行内容!

但是,如上所述,在创建方法表的过程中,子类重写方法将重写表中的原始数据。 也就是说,Child类方法表的第三行是对Child.eat的引用。

不是指向Parent.eat (因为方法表上产生了覆盖),而是c访问的是Child.eat。 也就是子类的方法! 在这种情况下,c不能直接访问父类的eat方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。