a只是个变量,不是具体的对象,它只是跟对象绑定,就好比我上面打比方的狗链。你赋什么值给变量,变量就是什么值(当然能赋值的前提就是类型一致,a是Animal类型,猫和狗也是Animal对象,类型一致,所以可以赋值)
赋值就是往变量内存里存放东西,重新赋值,就意味着变量内存之前的内容被擦去,然后被改写成新的内容
Animal a = new Dog1 是把狗赋给了a,此时a就连着狗
Animal b = a 你可以把a赋给b,此时b也连着狗
a = new Cat1 然后把猫赋给a,此时a被被切断和狗的连接,重新连着猫(内存信息被更新)
System.out.println(a==b) 你可以查看a和b是不是还相同(一个连着狗,一个连着猫)