多态
来源:互联网 发布:手机uu加速器网络异常 编辑:程序博客网 时间:2024/05/18 00:03
多态:子类的对象可以代替父类的对象使用
在多态情况下, 一个引用类型的变量如果声明为父类的类型, 但实际引用的是子类对象,则该变量就不能访问子类中添加的属性和方法。
可是如果此时调用的是父类中声明过,且在子类中又重写过的方法,情况又将如何?
1.创建Animal父类
public class Animal {//成员属性public String name;//构造器public Animal() {System.out.println("---------animal构造器--------");}//成员方法public void fly(){System.out.println("---animal----fly---");}}
2.创建Bird子类
public class Bird extends Animal{public String sex;public Bird() {System.out.println("----Bird构造器----------");}@Overridepublic void fly() {//super.fly();System.out.println("----Bird----fly---");}public void fly(float speed){}}
3.创建测试类
public class TestDemo {public static void main(String[] args) {// 在实例化子类的对象时,必须先实例化祖先/* * Bird b = new Bird(); * * b.fly();//调用的是Bird的方法 *//* * Animal animal = new Animal(); * * animal.fly();//调用的是Animal的方法 */// 调用子类中的重写方法/* * Bird bird = new Bird(); * * if(bird instanceof Animal){ Animal animal = bird; animal.fly();} */// 父类的对象不能当作是一个子类的对象来使用/* * Animal animal = new Animal();* Bird bird = (Bird) animal; */// 从父类到子类// bird.fly();// 声明的是一个Animal对象,但是实际引用的是Bird的对象Animal animal = new Bird();// 把animal对象转换成 Bird对象的时候,需要强制造型的.Bird bird = (Bird) animal;bird.fly();}}
0 0