java-多态

1、多态(Polymorphism):父类型的引用可以指向子类的对象。

理解:一个父亲有很多个孩子,每个孩子都有自己的形态。父亲可以引用每个孩子的形态。

子类就是父类。玫瑰是花,男人是人。

Rose rose = new Rose();

Flower rose = new Rose();

Parent p = new Child();

 

2、当使用多态方式调用方法时,首先检查父类中是否有sing()方法,如果没有则编译错误;如果有,再去调用子类的sing()方法。

记住,指向谁就调用谁的方法。

强制类型转换的两种类型:

l  向上类型转换(子类到父类):可以不把(Parent)写出来。显示的,甚至连转换语句都可以不写出来。

l  向下类型转换(父类到子类):必须把(Child)写出来。

(为什么要向下类型转换,为了调用子类中新加的方法)

 

3、向上类型转换

Cat cat = new Cat();

Animal animal = (Animal)cat; cat指向的是Cat,它可以指向父类Animal

 

4、向下类型转换的必要条件:指向必须正确

(1)Parent p = new Child();//p指向的是Child

Child c = (Child)p;//可以把p转换成Child

p指向的是谁,它就能转换成谁。

 

(2)Animal animal = new Animal();

Cat cat = (Cat)animal;

这种强制类型转换是错误的,不能把一只动物强制转换为一只猫,不能把父类的强制转换成子类的。

animal指向的是Animal,它不能转换成子类Cat。

 

5、多态的作用:在引用子类的方法是,可以传父类的一个对象过去就行了。

在实际开发中用得非常多

你可能感兴趣的:(java,多态)