本帖最后由 庄承荣 于 2011-12-6 23:53 编辑
父类引用指向子类对象是多态,并且有以下特点:
1、该引用只能调用父类中定义的方法和变量;
2、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;
3、变量不能被重写(覆盖),”重写“的概念只针对方法。
类多态性的表现和注意的地方:
(1)方法重载
重载表现为同一个类中方法的多态性。一个类生命多个重载方法就是为一种功能提供多种实现。编译时,根据方法实际参数的数据类型\个数和次序,决定究竟应该执行重载方法中的哪一个.
(2)子类重定义从父类继承来的成员
当子类从父类继承来的成员不适合子类时,子类不能删除它们,但可以重定义它们,使父类成员适应子类的新需求.子类重定义父类成员,同名成员在父类与子类之间表现出多态性,父类对象引用父类成员,子类对象引用子类成员,不会产生冲突和混乱。
子类可重定义父类的同名成员变量,称子类隐藏父类成员变量。子类也可以重定义父类的同名成员方法,当子类方法的参数列表与父类方法参数列表完全相同时,称为子类方法覆盖(override)父类方法。覆盖父类方法时,子类方法的访问权限不能小于父类方法的权限。
由于Object类的equals()方法比较两个对象的引用是否相等而不是值是否相等,因此一个类要覆盖Object类的equals()方法,提供本类两个对象比较相等方法.
覆盖表现为父类与子类之间方法的多态。java 寻找执行方法的原则是:从对象所属的类开始,寻找匹配的方法执行,如果当前类中没有匹配的方法,则逐层向上依次在父类或祖先类中寻找匹配方法,直到Object类。 |