多态的理解

1、多态的概念

(1)多态是同一个行为具有不同的表现形式或形态的能力

(2)同一方法可以根据发送对象的不同而采用不同的行为方式

2、多态的实现条件

(1)在多态中必须存在有继承或实现关系的子类和父类

(2)子类对父类中的某些方法进行重新定义(重写,使用@Override注解进行重写)

(3)基类引用指向派生类对象,即父类引用指向子类对象(父类类型:指子类对象继承的父类类型,或实现的父接口类型)

3、多态的格式

父类类型 变量名 = new 子类类型();

变量名.方法名()

4、多态中的成员特点

(1)多态成员变量:编译运行看左边

        eg.  Animal dog = new Dog();

               System.out.println(dog.age) ;

    (最后输出的是父类Animal中的值)

(2)多态成员方法:编译看左边,运行看右边

        eg.  Animal  dog  =  new Dog();

              dog.eat();     

    (最后调用的是子类的方法)

5、多态的特点

(1)多态情况下,子类和父类存在同名的成员变量时,访问的时父类的成员变量

(2)多态情况下,子父类存在同名的非静态成员方法时,访问的是子类中重写的方法

(3)多态情况下,子父类存在同名的静态成员变量成员方法时,访问的是父类的成员函数

(4)多态情况下,不能访问子类独的方法

6、引用类型转换

(1)向上转型(自动转换):多态本身是子类向父类向上转换(自动转换)的过程, 这个过程是默许的,当父类引用指向一个子类对象时,就是向上转型。

        eg. 父类类型 变量名 = new 子类类型();

               Animal dog = new  Dog();

            (本质为创建一个子类对象)

(2)向下转型:向下转型是父类向子类转换的过程,这个过程需要强制转换

        Eg. Male m2 = new Male();//子类类型 变量名 = new 子类类型();

              Human h2 = m2;  //父类类型 变量名=子类变量名;——向上转型

              m2= (Male) h2  ——向下转型     

              m2.speak(); 

    (因为h2是由m2向上转型赋值得到,所以对h2向下转型可以成功)

*Java中为了提高向下转型的安全性,引入了instanceof,如果该表达式为true,则可以安全转换

         Eg.  Human h4 = new Human();

                if (h4 instanceof Male){  // 因为h4不是Male的实例,所以不执行if内部代码

                         Male m4 = (Male)h4;

                        m4.speak();

                }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值