前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >类与对象(二)—— 多态

类与对象(二)—— 多态

作者头像
东边的大西瓜
发布2022-05-05 11:28:39
2740
发布2022-05-05 11:28:39
举报
文章被收录于专栏:吃着西瓜学Java

在上篇推文中我们已经写了有关继承的一些东西,这篇多态写完,我们就剩下封装了,因为封装是与对象有关的一个概念,所以我决定把关于它的介绍放在下一篇对象篇。下面让我们切入正题:多态

多态

多态概述

在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态不但能够改善代码的组织结构和可读性,还能够创建可拓展的程序——即无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。——《java编程思想第四版》

多态可以用来提高程序的可扩展性。

多态存在的三个必要条件

  • 继承:extend(上篇已讲)
  • 向上转型:父类对象引用指向子类对象(上篇已讲)
  • 重写:子类对父类的允许访问的方法进行重新编写, 返回值和形参都不能改变。外型不变,核心重写!

西瓜籽疑惑之重载

西瓜籽:“我记得还有一个重载的概念,它和重写有什么区别吗?

大西瓜:“好问题,下面我们就来讲一下重载。”

重载:方法名相同,参数不同,返回值可以相同也可以不同。一个类中的不同的构造函数就是例子。方法可以以在其子类中被重载,这时重载方法就是属于子类特有的方法。

代码语言:javascript
复制
    public class ZZZ {
    //无参构造函数
    public ZZZ(){}
    //有参构造函数
    public ZZZ(String name){}
    
    }


多态的应用

我们知道实现多态的目的就是增加程序的扩展性,那么它具体可以体现为:

多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。

我们用代码来理解一下这两句话,其实这两句话表达的是一个意思。多态的核心有向上转型,所以其应用和我们上章在讲述向上转型使得示例相同,为了做出些区别我这次用内部类来写:

代码语言:javascript
复制
public class Dome {
    //Person类
    static class Person{
        String name;
        public void doing(){
            System.out.println("我要吃饭");
        }
    }
    //ZZZ类
    static class ZZZ extends Person{
        public void doing(){
            System.out.println("我是西瓜籽,我不用吃饭!!!");
        }
    }
    //DXG类
    static class DXG extends Person{
        public void doing(){
            System.out.println("我是大西瓜,我没西瓜籽厉害,我要吃饭!");
        }
    }

    public static void main(String[] args) {
        Person zzz = new ZZZ();
        Person dxg = new DXG();
        zzz.doing();
        dxg.doing();
    }
}

输出结果:
代码语言:javascript
复制
我是西瓜籽,我不用吃饭!!!

我是大西瓜,我没西瓜籽厉害,我要吃饭!

多态到这先告段落,下篇我们来聊下,我们自己如何创建属于自己的对象

- Continue -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吃着西瓜学Java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多态
    • 多态概述
      • 多态存在的三个必要条件
        • 多态的应用
          • 多态到这先告段落,下篇我们来聊下,我们自己如何创建属于自己的对象
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档