一个学习过程中的小疑惑。

先这样这样

public class Pen {
    String color= "黄色";
    void hua() {
        System.out .println("用黄色笔画画");
  
    }
}
class Pencel extends Pen{
    String color= "黑色";          //???
    void hua() {
        System.out .println("用黑色笔画画");
    }

}

然后

public class Draw {
    void draw(Pen p) {
        System.out .println("笔是"+p.color+"颜色");
        p.hua();
    }
    public static void main(String[] args) {
        Draw h=new Draw();
        h.draw(new Pencel());
    }
}

为啥p.color那不是Pencel的color黑色,而是Pan的color黄色呢?
可以告诉我是哪方面的知识没学到吗??我我菜鸟。。谢谢!!!!!

阅读 1.7k
2 个回答

成员变量不像方法一样会 override ,你用哪个给访问,就会拿到哪个类的版本。

所以,draw(Pen P) 里哪到的是 Pen 版本的 color ,但是方法 hua 被 override 了,所以调用 Pencel 的版本。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题