继承和多态

1.多态的概念

    多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。
    编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。
    对不同类的对象发出相同的消息将会有不同的行为。比如,你的老板让所有员工在九点钟开始工作, 他只要在九点钟的时候说:“开始工作”即可,而不需要对销售人员说:“开始销售工作”,对技术人员说:“开始技术工作”, 因为“员工”是一个抽象的事物, 只要是员工就可以开始工作,他知道这一点就行了。至于每个员工,当然会各司其职,做各自的工作。
     多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。这里引用和调用方法的代码编译前就已经决定了,而引用所指向的对象可以在运行期间动态绑定。再举个比较形象的例子:
     比如有一个函数是叫某个人来吃饭,函数要求传递的参数是人的对象,可是来了一个美国人,你看到的可能是用刀和叉子在吃饭,而来了一个中国人你看到的可能是用筷子在吃饭,这就体现出了同样是一个方法,可以却产生了不同的形态,这就是多态!
多态的作用:
1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承
2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,以前需要用switch实现

2.多态的应用

2.1 向上转型:父类引用指向子类对象

比如说将Cat类型转换为Animal类型,即子类型转换为父类型。对于向上类型转换,不需要显式使用强制类型转换

Cat cat = new Cat ();

Animal animal = cat;

如上为向上转型;

2.2向下转型:父类引用显式类型转换为子类对象。

比如将Animal类型转换为Cat类型,即将父类型转换为子类型。对于向下类型转换,必须要显式使用强制类型转换。

Animal a = new Cat();

Cat cat = (Cat) a;

如上为向下转型;

使用多态时一些 注意事项:

  1. 存在继承
  2. 方法重写

3.Instanceof运算符的应用

作用:用来判断对象的类型。

Public class Demo{

Public static void main(String[] args){

//不能用子类引用指向父类对象

        //编译期错误

        //运行期错误

        //向下转型

        Cat c=(Cat)c1;

        //先判断一下要转换的类型是否是目标类型,如果是,再强制类型转换

        if(d1 instanceof Cat){//instanceof用来判断对象类型,返回值true表示类型一致,false表示类型不一致

            Cat c2=(Cat)d1;

        }

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值