java 态的条件_在Java中多态存在的必要条件是什么

7f5c3aee1a60409dc4f4ade08dd89c31.png

多态存在的三个必要条件:继承

重写

父类引用指向子类对象

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:

可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

测试代码:public class Test {

public static void main(String[] args) {

show(new Cat()); // 以 Cat 对象调用 show 方法

show(new Dog()); // 以 Dog 对象调用 show 方法

Animal a = new Cat(); // 向上转型

a.eat(); // 调用的是 Cat 的 eat

Cat c = (Cat)a; // 向下转型

c.work(); // 调用的是 Cat 的 work

}

public static void show(Animal a) {

a.eat();

// 类型判断

if (a instanceof Cat) { // 猫做的事情

Cat c = (Cat)a;

c.work();

} else if (a instanceof Dog) { // 狗做的事情

Dog c = (Dog)a;

c.work();

}

} }

abstract class Animal {

abstract void eat(); }

class Cat extends Animal {

public void eat() {

System.out.println("吃鱼");

}

public void work() {

System.out.println("抓老鼠");

} }

class Dog extends Animal {

public void eat() {

System.out.println("吃骨头");

}

public void work() {

System.out.println("看家");

} }

输出结果:吃鱼

抓老鼠

吃骨头

看家

吃鱼

抓老鼠

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值