JAVA学习之对象的多态性

1. 多态性在面向对象中是一个重要的概念,在JAVA中面向对象主要有以下两种体现

       1.对方法的重载与覆写。

        2.对象的多态性。

     掌握对象多态性之后可以直接应用在抽象类的接口上。

2. 对象的多态性

     对象多态性主要分为以下两种类型:

             1.向上类型:子类对象--->父类对象

                            对于向上转型,程序会自动完成,格式:  

                                  对象向上转型: 父类 父类对象 =子类实例;

              2.向下转型:父类对象--->子类对象

                             对于向下转型时,必须明确的指明要转型的子类类型,格式:

                                   对于向下转型:子类 子类对象 =(子类) 父类实例;

    以上程序是通过子类进行父类对的实例化的操作,就是说如果调用调用的方法被子类覆写过,则

调用的是被覆写过的方法。反之,若没有被子类覆写,则调用本类中的方法。

  注意:转型之后,因为操作的是父类对象,所以是无法找到在子类中定义的新方法。例如程序中的fun3。

            将父类对象变为子类对象,称为向下转型,向下转型需要强制转换 。

    在类B中存在三个方法,所以可以全部调用。

但是,进行对象向下转型操作有一个注意点。

 

    上图是将之前的A a =new B();  改为A a= new a();

编译时不会出现问题,但在执行时候会出现如下问题:

    上述错误是继空指向后,在开发中常见的问题,表示A不能转到B。

此异常在对象转型时经常发生,如果两个没有关系的对象之间发生了转换关系,则肯定出现此异常。

    上程序中,若单看A类,不能确定A有那些子类,所以他们是没有关系的;而单看B类,可以明显的知道B类是A的子类,

可以看出A,B两个类是有关系的。

     就是说,如果要想产生对象的向下转型,则必须先产生一个向上的转型关系。

3.  instanceof 关键字

   在JAVA中可以使用instanceof关键字判断一个对象到底是那个类的实例

   格式:    对象 instanceof 类--->返回boolean类型

例如: a instanceof B;   //判断实例a是否属于B

    在开发中一定要注意,对于向下转型操作最好增加验证,以保证转型时不会发生

ClassCastException。

    如果要增加新的子类,则肯定要修改方法,如果这样程序就失去了灵活性,所以

在程序的开发中设计的重点应该放在父类上,只要父类设计的足够合理,则开发肯

定会非常的方便。

注意:程序开发中,一个类一定不要继承已经实现好的类,只能继承抽象类或者实现接口,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值