类的继承发生在多个类之间,而类的多态性发生在同一个类上。
在一个类中,可以定义多个同名的方法,但方法的参数个数和数据类型是不同的。这种类型是类的多态性。
-
成员方法的重载 。 成员方法的多态性使类能够向外提供一个较为一致的接口,对程序员来说,不必关系同名方法内部的细节差别,只要掌握他们在使用时参数的个数和类型就可以了。
-
构造方法的重载。 如果在初始化对象时需要对象具有更多的特征,可重载构造方法。
-
避免重载出现歧义: 方法重载之间必须保证参数类型不同或个数不同,否则方法被调用时可能出现调用歧义。
4. 向上转型 划重点
向上转型是将子类 B 的对象自动向上转型为父类 A 的对象,通俗的讲即是将子类对象转型成父类对象。
向上转型的作用是对父类方法的扩充。作为向上转型的对象其可访问子类B 从 A 中继承的且被 B 重载的方法, B的其他方法转型后的对象不能访问。
abstract class Animal{
public abstract void move() ;
}
class Parrot extends Animal {
public void move() {System.out.println("鹦鹉正在飞行……");}
void drink() {System.out.println("鹦鹉正在喝水……");}
}
class Tortoise extends Animal{
public void move() { System.out.println("乌龟正在爬行……");}
void drink() {System.out.println("乌龟正在喝水……");}
}
public class exp5_3{
public void free(Animal a) { //这里父类为参数
a.move();
}
public static void main(String [] args) {
exp5_3 zoo = new exp5_3();
zoo.free(new Parrot()); //传入子类对象,子类对象向上转型作为父类对象。
zoo.free(new Tortoise());
}
}
向上转型的过程即子类对象变成父类对象,其作用是父类对象调用子类中重载的父类方法。作为父类对象,当然也就不能调用子类中父类没有的方法。