[b]java 多态[/b]
[b]Java实现多态有三个必要条件:[/b]
1.继承,在多态中必须存在有继承关系的子类和父类。
2.重写,子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
3.向上转型,在多态中需要将子类的引用(子类对象指针)赋给父类对象(子类对象指针变换为父类类型),只有这样该引用才能够具备技能调用父类的方法和子类的方法。(没有这个,你调用的方法永远是子类的)
[b]理解(括号里的为解释)方法调用的优先级:[/b]
1.当超类(父类)对象引用变量引用子类对象时(就是超类类型的(对象引用变量)指向(引用)子类对象),被引用对象的类型(子类对象)而不是引用变量(指针)的类型决定了调用谁的成员方法.
2.这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法(被子类覆盖过),但是它仍然要根据继承链中方法调用的优先级来确认方法,该优先级为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。
[b]Java实现多态有三个必要条件:[/b]
1.继承,在多态中必须存在有继承关系的子类和父类。
2.重写,子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
3.向上转型,在多态中需要将子类的引用(子类对象指针)赋给父类对象(子类对象指针变换为父类类型),只有这样该引用才能够具备技能调用父类的方法和子类的方法。(没有这个,你调用的方法永远是子类的)
[b]理解(括号里的为解释)方法调用的优先级:[/b]
1.当超类(父类)对象引用变量引用子类对象时(就是超类类型的(对象引用变量)指向(引用)子类对象),被引用对象的类型(子类对象)而不是引用变量(指针)的类型决定了调用谁的成员方法.
2.这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法(被子类覆盖过),但是它仍然要根据继承链中方法调用的优先级来确认方法,该优先级为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。