继承的作用之一就是子类自动的得到父类的属性和方法。上面的程序b是可以调用父类的方法的。private方法除外。

解决方案 »

  1.   

    a是A 的实例
    a2是B的实例 但是他向上转型(upcase)为基类A。
      

  2.   

    再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?
      

  3.   

    再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?
    你说的很对
      

  4.   

    a是A的实例,a2是B的实例。其实equals和hashCode都可以自己改写,他们当然可以不同但是java规范制定他们必须相同
      

  5.   

    再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?
    我那个回答好像有点不对。equals相同 hashcode可以不相同的  假如你重写了equals方法但是没有重写hashcode方法,也不报错,只是不规范,所以还是不要把话说死了。
    你的那个说法在集合中是正确的
      

  6.   

    a1是 A的实例,a2是B的实例,虽然他们都是保存在了A类型,但是a2可以通过 B t = (B)a2可以强转为B,这样就可以访问A和B的所有公有方法,但是a却不能强转。
      

  7.   

    a是A的实例,a2是B的实例,但引用类型是A,在继承中记住一句话方法动态绑定到引用对象类型!
      

  8.   

    a是A的实例,a只可以调用A类的方法。a2是B的实例,既可以调用a的方法也可以调用b的方法。
    只有hashcode()方法值相同时,才比较equals()方法。
      

  9.   

    a是A的实例,a2是父类A的实例,但是用子类的实例为其赋值,在java里面有这种存在,术语是什么就记不清了,
      

  10.   

    在运行的时候,a2调用的是B中的方法。当然,你这个例子中,B中没有overrideA中的方法,不然更容易看出来
      

  11.   

    a与a2的区别在于(B)a2能成功,并且能够((B)a2).update(),而(B)a则会报错
      

  12.   

    再请教个问题哦,equals和hashCode,是不是equals为true,hashcode一定相同?hascode相同,equals不一定为true?还是其他的说法?
    原则上是这样,但是你可以在自己的类中重写这两个方法,使其不符合这个原则,但不建议这样。
      

  13.   

    new后面的才是 变量真实的被实例化的类型,=号前面的是声明这个变量的类型(当然必须有继承和实现关系),也就是说 a 是A类的实例
    a2是B类的实例,但a2被声明成A类所以可以通过强制类型转换调用A的子类也就是B类定义的方法