首页 > 编程语言 >模块3 面向对象编程高级 --- 第十章:实现多态

模块3 面向对象编程高级 --- 第十章:实现多态

时间:2024-07-28 12:29:05浏览次数:9  
标签:面向对象编程 实现 多态 接口 Cat --- Animal public

第十章 实现多态

主要知识点

  1、多态的定义

  2、实现多态的条件

学习目标

  理解多态的含义,掌握多态的使用方法,所谓多态:多种状态。在面向对象语言中,接口中定义的抽象方法的多种不同实现方式即多态。

10.1 创建多态的条件

10.1.1 多态的定义

  首先多态的作用是什么呢?

  即一个引用变量到底会指向哪个类的实例对象。让程序可以选择多个运行状态,这就是多态性。

10.1.2 多态的条件

  在代码中实现Java的多态必须遵守两个必要的条件:

  (1)存在子类继承父类的关系(包括接口的实现);

  (2)子类覆盖父类中的方法;

public abstract class Animal{
    public abstract void say();
}

public class Dog extends Animal{
    public void say(){
        System.out.println("汪汪汪");
    }
}  

public class Cat extends Animal{
    public void say(){
        System.out.println("喵喵喵");
    }
}

public class Pig extends Animal{
    public void say(){
        System.out.println("哼哼哼");
    }
}    

  说明:

  (1)覆盖方法的参数列表必须和被覆盖方法的参数列表完全相同,否则,不能成为其覆盖而是重载。

  (2)覆盖方法的返回值必须与被覆盖方法的返回值一致。

  (3)静态方法不能被覆盖为非静态的方法(编译会出错)。

10.2 多态的实现方法

10.2.1 子类向父类转型实现多态

  首先想要理解多态性,要知道“向上转型”的含义。

Cat c = new Cat();
Animal a = new Cat(); 

  Animal类型的引用是可以指向Cat类型的对象的。

10.2.2 类向接口转型实现多态

  类实现接口,通常也意味着该类继承接口,类向接口转型实现多态也可以是面向对象语言无处不在的应用。

习题

一、简答题

  1、什么是多态?类的多态是怎么实现的?

  2、创建多态需要哪些条件?

  3、类是怎么向接口转型实现多态的?

二、操作题

  1、定义交通工具的抽象类Vehicle,包括方法run,然后定义三个子类Car(汽车)、Ship(船)、plane(飞机),分别实现Vehicle的run方法。

  2、参考例10-2,应用Vehicle类与Car(汽车)、Ship(船)、plane(飞机)实现多态。

  3、运行例10-3,分析在主类中应用多态的过程。

标签:面向对象编程,实现,多态,接口,Cat,---,Animal,public
From: https://www.cnblogs.com/kuangmeng/p/18325368

相关文章

  • E - Maximum Glutton
    原题链接题解暴力:二进制表示所有状态为了减少重复运算:设计一个数组,代表\(x\)为某值的时候最小的\(y\)但是还需要知道吃了多少个:再加一层状态不就好了code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintinf=1e9;inta[100],b[100];int......
  • SpringBoot+Vue电影院售票系统 - 附源码与配套文档
    1.1 研究背景随着互联网技术的迅速发展和普及,人们的生活方式发生了深刻变革,对于文化娱乐消费的需求日益增长,而作为文化消费重要组成部分的电影行业也迎来了前所未有的发展机遇。然而,传统的电影院售票模式,如现场购票、电话预定等,已难以满足现代消费者对便捷性、灵活性和个性......
  • D - K-th Nearest
    原题链接题解whenyouareaskedtofindthe“k-thwhatever-estsomething,”binarysearchisoftenadoptedasthefirststepofthesolution以\(d_k\)为半径的线段里恰好有\(k\)个\(a\)code#include<bits/stdc++.h>#definelllonglongusingnamespacestd......
  • leetcode-7
    题目:给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1] ,就返回0。推导:代码:classSolution{public:intreverse(intx){intres=0;while(x!=0){......
  • CCF-CSP 201412-1 门禁系统
    一、问题描述问题描述涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输入格式输入的第一行包含一个整数n,表示涛涛的记录条数。第二行......
  • 好书推荐 -- 《精通推荐算法》
    新书发布,京东限时15天内5折优惠,半天即可送到。图书封底有读者微信群,作者也在群里,任何技术、offer选择和职业规划的问题,都可以咨询。《精通推荐算法》,限时半价,半日达https://u.jd.com/VbCJsCz1作者介绍、本书内容、Q&A、业内人士好评和图书实拍本书不仅适合推荐算法工程......
  • 币安实时交易 - APIError(code=-2014): API 密钥格式无效
    使用我的api_key从币安导入数据后,我在请求帐户信息时遇到问题。我正在编写一个脚本,允许使用(PythonBinanceWebsocket)获取实时“MATICUSDT”数据。创建历史线数据帧时,脚本运行完全正常,但不会返回帐户信息。错误:BinanceAPIException:APIError(code=-2014):API密钥格式无效。......
  • SQL多表查询-JOIN的用法
    假设有两张表:学生表students和课程表courses,现在要查询学生名和课程名。--students表+----+---------+-----------+|id|name|course_id|+----+---------+-----------+|1|Alice|1||2|Bob|2||3|Charlie|NULL|+......
  • c语言-指针
    6指针一、指针是什么1、指针是地址(1)地址是什么?a. 内存中用于cpu标识的一组编号   --是以十六进制的形式存储的b.cpu要么是32位,要么是64位的地址针注:这里电脑是64位,而空间是16G,这是因为电脑还有内存条,一个内存条有8G,所以总共是16G。这里的RAM是动态内存,是正在使用......
  • Python酷库之旅-第三方库Pandas(050)
    目录一、用法精讲181、pandas.Series.var方法181-1、语法181-2、参数181-3、功能181-4、返回值181-5、说明181-6、用法181-6-1、数据准备181-6-2、代码示例181-6-3、结果输出182、pandas.Series.kurtosis方法182-1、语法182-2、参数182-3、功能182-4、返回值1......