aa.foot的值为何是A中的4而不是B中的2。

来源:7-1 编程练习

迷途的旅人

2018-09-09 17:07

class A{

    int foot=4;

    void m1(){

        System.out.println("A`s m1");

    }

    void m2(){

        System.out.println("A`s m2");

    }

    void  m3(){

        System.out.println("A`s m3");

    }

}

 class B extend A{

    int foot=2;

    void m1(){

        System.out.println("B`s m1");

    }

}

 class C extend B{

    void m3(){

        System.out.println("C`s m3");

    }

}

public class Lianxi10 {
    public static void main(String[] args){

   A aa=new C();

    aa.m1();

    aa.m2();

    aa.m3();

    System.out.println(aa.foot);

}
}


写回答 关注

4回答

  • CNSDHH
    2018-09-10 17:26:16
    已采纳

    我把你的代码复制到的环境中都无法执行,报错如下图所示:

    https://img3.mukewang.com/5b96386d0001b65106940298.jpg

    迷途的旅人

    这应该是多态的应用与对象数据类型的转换(向上转型)。 是我打错代码了,十分抱歉 。

    2018-09-16 20:49:09

    共 1 条回复 >

  • qq_瑾心_04135864
    2018-09-10 23:32:52

    因为你对象是A呀



  • CNSDHH
    2018-09-10 17:23:59

    我想知道你的是怎么执行成功的?按理说类型不匹配无法编译执行啊???我的就无法执行。

    迷途的旅人

    给您添麻烦了

    2018-09-16 20:42:43

    共 1 条回复 >

  • CNSDHH
    2018-09-10 17:20:19

    类型不匹配,不能从 C 转换为 A

    迷途的旅人

    不好意思,我的代码没复制好。

    2018-09-16 20:40:01

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165175 学习 · 17581 问题

查看课程

相似问题