Java多态

一、父类作为方法形参时

在调用该方法时,可以传入任何一个子类对象,此时,这个形参就有值了,值是传入的子类对象,当使用这个形参调用父类中的方法时:

  • 如果子类没有重写父类方法,则调用的就是父类中的方法
  • 如果子类重写过了父类的方法,则调用的就是子类中重写过的方法
  • 不能调用子类中独有的方法,如果必须调用,则需要先进行强制类型转换(将父类引用转换为子类引用)

总结

父类引用指向子类对象时,在调用方法时,

如果子类没有重写父类方法,则调用的就是父类中的方法;

如果子类重写过了父类的方法,则调用的就是子类中重写过的方法,并且该引用(对象)不能在调用子类中独有的方法,

如果必须调用,则需要先进行强制类型转换(将父类引用转换为子类引用)

当父类的类型声明的对象,值是子类对象时,就叫做父类引用指向子类对象
案例:
父类 对象名 = new 子类构造方法();
此时
对象名就叫做引用,其类型就是声明的父类的类型
=就表示指向
new 子类构造方法()其实就是在创建子类对象
因此
这就叫做父类引用,指向子类对象

当调用有参方法时,实际上就是将实参赋值给形参
public void calc(int a,int b){...}
调用:calc(1,2);
其实就等价于,int a = 1;int b = 2;

public void feed(Pet pet){...}
feed(dog);
就等价于: Pet pet = dog;
又因为:dog = new Dog();
所以:Pet pet = new Dog(); 这就是父类引用指向子类对象

二、实现多态的三要素

  • 编写具有继承关系的父类和子类
  • 子类重写父类方法
  • 使用父类的引用指向子类的对象

三、instanceof运算符

在强制类型转换中,如果没有转换为真实子类类型,就会出现类型转换异常,怎么办?

在Java中,提供了instanceof运算符来判断对象的类型

语法

对象名 instanceof 类或接口

使用经验

  1. 使用instanceof运算符时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误
  2. instanceof通常和强制类型转换结合使用

四、总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值