多态

多态

多态:
字面上的理解,多种形态有多种形式:方法的重写、方法的重载
对象也存在多种形式
多态语法
父类类名 对象名 = new 子类类名()
Animal cart =new Cart();
这种写法叫做父类指向子类对象
多态前提:类之间要有继承关系

多态的特征:
在多态情况下:
子父类中都有同名的静态方法是,调用同名静态方法应该注意:
编译看左边,运行看右边
子父类中都有同名的非静态方法时,调用同名非静态方法是应注意:
编译看左边,运行看右边
子父类中都有同名属性(静态和非静态)时,调用同名属性(静态和非静态)应该注意:
编译看左边,运行看左边
变量是不存覆盖的,只有方法才能覆盖
好处:提高代码的重用性,便于维护

多态的缺点
多态后不能调用子类特有的(只有子类中有,父类中没有的方法)方法
解决办法
向上转型(上塑造型):
子类猫转成了父类型(动物)
Animal an=new Cat();
向下转型(下塑造型):
父类型(动物)转成了子类型(猫)
Animal an=new Cat();
Cat c=(Cat)an;
向下转型注意:Animal an=new Cat();
Dog dog=(Dog)an;错误的
Animal an =new Animal();
Dog dog=(Dog)an;错误的
如:猫是动物的一种,但是动物不单单是猫
会报类型转换异常:java.lang.ClassCastException

多肽类型的判断instanceof
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例
语法:对象 instanceof 类 返回值 boolean
public static void method(Animal an){
Animal an=new Cat();
Animal an=new Dog();
if(an instanceof Cat){
Cat cat=(Cat)an;
cat.catchMouse();//特有方法,只属于猫
}
if(an instanceof Dog){
Dog dog=(Dog)an;
dog.LookHome();//特有方法,只属于狗
}
an.eat();//不是特有方法
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值