java吧 关注:1,241,778贴子:12,712,578
  • 8回复贴,共1

作为新手小白,有个问题请教老哥们!解答我的迷惑

只看楼主收藏回复

B b= (B)a;这个代码是求什么?
还有46行的print (A a)这个又是怎么出现,为什么有它,没有他行不行……
千言万语一句话Java 学的都是泪


来自iPhone客户端1楼2017-04-23 19:58回复
    多态。向下转型。


    IP属地:浙江来自Android客户端2楼2017-04-23 20:18
    回复
      向下转型,(B)不是子类吗? a不是父类吗


      来自iPhone客户端3楼2017-04-23 20:26
      回复
        你还要怎样,要怎样


        来自Android客户端4楼2017-04-23 20:26
        回复
          哪位老哥来解答下我的疑惑


          来自iPhone客户端5楼2017-04-23 20:48
          回复
            a是自己
            if(a instanceof B) //如果a继承自B
            if(a instanceof C) //如果a继承自C


            IP属地:广东6楼2017-04-23 21:00
            收起回复
              多态,向下转型,B b= (B)a 因为a现在是一个父类引用指向,所以只能使用父类里面存在的方法,即使你新new一个子类对象,但是他是父类引用指向子类对象,只能使用父类有的方法,你要是使用子类特有的方法,必须向下转型,转成子类本身的引用,重点:类型转换都是面对的对象。
              46是传进来一个A类的对象,可以是子类B的,其实就是为了增强程序的课扩展性,只要你是我A的子类或者我本身,你创建了我就可以指向。


              IP属地:重庆7楼2017-04-23 21:04
              收起回复