Animal a = new Cat(); 像这样子的语句,Cat是Animal的子类,a不能调用cat类里面特有的方法和属性,a只能看到cat从Animal继承过去的方法和属性,a在编译的时候,只能调用Animal里面的方法和属性,而不能调用Cat的方法和属性。 要注意的是,这样写Animal a = new Cat(); 后面的Cat必须继承Animal类,为了出现多态,Cat类中必须重写Animal的方法。所谓重写,就是要有和父类Animal中有一模一样的方法。 编译的时候,a调用的是自己的方法,我们可以预测结果,但是运行的时候,却出现了不同的结果,因为他这个时候调用的是Cat的方法,这就是多态。 多态呢,很简单,面向对象吗,动物是总类,他又自己特定方法,继承与他的其他动物也有这个特定方法,但是他们方法结果不一样的。 多态,也仅仅是指类的方法,与属性没有任何关系。 Animal a = new Cat(); a这个引用变量指向了Cat这个对象。 |