Thinking in java-24 Polymorphism 多态

本文介绍了面向对象编程中多态的概念,通过示例说明了如何利用多态提高代码灵活性及复用性。具体演示了不同子类实现同一抽象方法时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.多态Polymorphism

多态的初衷是为了让方法的适用性更强,即:当我们写了一个方法时,可以把基类作为参数,而可以将扩展类作为其参数传入;而不是将扩展类作为参数,此时该方法的适用度就没有前者高了。
Polymorphism is the ability of a class instance to behave as if it were an instance of another class in its inheritance tree, most often one of its ancestor classes. For example, in Java all classes inherit from Object. Therefore, you can create a variable of type Object and assign to it an instance of any class.
多态的定义:一个类的实例对象表现起来就像它是其所在继承树其他类的实例一样,通常该类表现地更像其父类。极端情况是,我们创建一个参数为Object类对象的方法,那么我们可以把任意对象传给这个函数。

2.实例Demo

stackoverflow上有该问题相关的Q&A.
这里有个interesting的例子。

public abstract class Human{
    public abstract void goPee();
}
public class Male extends Human{
    @Override
    public void goPee(){
        System.out.println("First, stand up...");
    }
}
public class Female extends Human{
    @Override
    public void goPee(){
        System.out.println("First, sit down...");
    }
}
public class TestPoly{
    public static void main(String[] args){
        ArrayList<Human> list = new ArrayList<>();
        list.add(new Male());
        list.add(new Female());
        for(Human human: list)
            human.goPee();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值