标题:子类、父类问题
只看楼主
红柚
Rank: 4
来 自:咸鱼乡的酸菜鱼
等 级:贵宾
威 望:14
帖 子:53
专家分:218
注 册:2018-4-20
结帖率:71.43%
已结贴  问题点数:20 回复次数:4 
子类、父类问题
class A {
   public void print() {
      System.out.println("A");
   }
}
class B extends A {
   public void print() {
      System.out.println("B");
   }
   public static void main(String[ ] args) {
    A object = new B();
    B b = (B) object;
    b.print();
   }
}

问题是:main中,只有new A(); 然后输出结果才会是A,其他我试了下都是B。
能够给我讲解下这个过程么,我没怎么理解。
不是子类会被upcasting到父类么。
搜索更多相关主题的帖子: 子类 父类 public void print 
2018-09-08 10:23
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:5 
你的 B 里面都已经把print()重写了,调用b.print();自然是重写后的。

saber,别哭.
2018-09-08 13:43
红柚
Rank: 4
来 自:咸鱼乡的酸菜鱼
等 级:贵宾
威 望:14
帖 子:53
专家分:218
注 册:2018-4-20
得分:0 
回复 2楼 幻紫灵心
请问,意思就是子类将方法重写后,就算将这个子类提升为父类,调用也是重写后的方法对么。
2018-09-08 13:58
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:15 
程序代码:
public class Ex {
    public static void main(String[] args) {
        A object = new B();
        object.print();//显示 B
        B b = (B) object;
        b.print();//显示 B
    }
}
class A {
   public void print() {
      System.out.println("A");
   }
}
class B extends A {
   public void print() {
      System.out.println("B");
   }
}

我觉得你可能想问我这个object.print(); object是A的对象,但是打印出来的是 B 。
这是java的动态绑定,有继承,有重写,则父类引用指向子类对象。new 的是谁就指向谁。

saber,别哭.
2018-09-08 13:58
红柚
Rank: 4
来 自:咸鱼乡的酸菜鱼
等 级:贵宾
威 望:14
帖 子:53
专家分:218
注 册:2018-4-20
得分:0 
回复 4楼 幻紫灵心
啊啊啊,谢谢
2018-09-08 14:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489686-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046254 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved