Java中的多态

向上转型

Bird bird = new Bird("圆圆");

这个代码也可以写成这个样子

Bird bird = new Bird("圆圆");
Animal bird2 = bird;
// 或者写成下面的方式
Animal bird2 = new Bird("圆圆");

此时 bird2 是一个父类 (Animal) 的引用, 指向一个子类 (Bird) 的实例. 这种写法称为 向上转型

向上转型发生的时机:
1、直接赋值
2、方法传参
3、方法返回

方法传参:

public class Test {
   
public static void main(String[] args) {
   
Bird bird = new Bird("圆圆");
feed(bird);
}
public static void feed(Animal animal) {
   
animal.eat("谷子");
}
}
// 执行结果
圆圆正在吃谷子

此时形参 animal 的类型是 Animal (基类), 实际上对应到 Bird (父类) 的实例

方法返回:

public class Test {
   
public static void main(String[] args) {
   
Animal animal = findMyAnimal();
}
public static Animal findMyAnimal() {
   
Bird bird = new Bird("圆圆");
return bird;
}
}

此时方法 findMyAnimal 返回的是一个 Animal 类型的引用, 但是实际上对应到 Bird 的实例

动态绑定

// Animal.java
public class Animal {
   
protected String name;
public Animal(String name) {
   
this.name = name;
}
public void eat(String food) {
   
System.out.println("我是一只小动物");
System.out.pri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值