概念
多态:就是对象的多种表现形式,(多种体现形态)
多态的体现
从类来说,在类中有子类和父类之分,子类就是父类的一种形态 ,对象多态性就从此而来。
从方法来说,方法的重载 和 重写 也是多态的一种。 重载: 一个类中方法的多态性体现 重写: 子父类中方法的多态性体现。
多态的使用:对象的类型转换
类似于基本数据类型的转换:
·向上转型:将子类实例变为父类实例 |- 格式:父类 父类对象 = 子类实例 ;
· 向下转型:将父类实例变为子类实例 |- 格式:子类 子类对象 = (子类)父类实例 ;
多态使用
注意
public static void main(String[] args) {
/**
* Student和Teacher都是Person的子类
* 将他们向上转型转成Person类不会报错
* 你可以说学生和老师都是人
*/
Person s1 = new Student();
Person t1 = new Teacher();
/**
* Person是Student和Teacher的父类
* 将他向下转型转成Student和Teacher不会报错
* 你可以说人可以是学生或者是老师
*/
Student s2 = (Student) new Person();
Teacher t2 = (Teacher) new Person();
/**
* 将student转成teacher或者teacher转成student会报错
* 你不可以说学生是老师,老师是学生
*/
Teacher s3 = new Student();
Student t3 = new Teacher();
}
场景
public static void main(String[] args) {
Student student = new Student();
student.say();
// Teacher teacher = new Teacher();
// teacher.say();
}
public static void say(Person p){
p.say();
}
比如我们想传入学生类调用学生类的方法时,刚开始可能传入的是Student student 后来我们又想调用老师类的方法则需要传入Teacher teacher 改变一个对象就需要修改一次方法很麻烦 利用多态则 直接传入Person person 传入的参数都可以接收到 不用再修改方法