| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1840 人关注过本帖
标题:子类、父类问题
只看楼主 加入收藏
红柚
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
帖 子:396
专家分: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
帖 子:396
专家分: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
快速回复:子类、父类问题
数据加载中...
 
   



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

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