第三章:多态

一、多态

1、什么是多态?

解析:不同的对象对于同一个操作,做出的响应不同

         具有表现多种形态的能力的特征

2、使用多态的优点

解析:为了实现统一调用

一个小例子:<父类类型作为参数>

父类(Pet) 子类(Gog,Penguin) 主人类(Master)测试类(Test)

Pet

public abstract class Pet {public abstract void eat();}

Dog

复制代码
复制代码
   public class Dog extends Pet{@Overridepublic void eat() {System.out.println("够吃骨头");}
复制代码
复制代码

Penguin 

复制代码
复制代码
   public class Penguin extends Pet {@Overridepublic void eat() {System.out.println("企鹅吃fish");}
复制代码
复制代码

Master

复制代码
复制代码
public class Master {//父类类型作为参数
public void feed(Pet pet)
{pet.eat();}}
复制代码
复制代码

Test

复制代码
复制代码
    public static void main(String[] args) {Master master=new Master();Pet pet=new Dog();master.feed(pet);}
复制代码
复制代码

二、子类到父类的转换(向上转型)

规则:

① 将一个父类的引用指向一个子类对象,成为向上转型,自动进行类型转换

② 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

③ 通过父类引用变量无法调用子类特有的方法

三、java中两种实现和使用多态的方式

① 使用父类作为方法形参

② 使用父类作为方法返回值

四、父类到子类的转换(向下转型)

将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型。此时必须进行强制类型转换

五、instanceof运算符

语法:

对象 instanceof 类或接口

该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false

注:

① 使用instanceof运算符时,对象的类型必须和instanceof的第二个参数所指定的类或接口在继承树上有上下级关系,否则会出现编译错误

② instanceof通常和强制类型转换结合使用


 

六、接口

在java语言中,接口有两种意思:

①概念性的接口,即系统对外提供的所有服务

②指用interface关键字定义的接口,也称为接口类型

七、特征

① 接口中的成员变量默认都是public、static、final类型的,必须被显示初始化

②接口中的方法默认都是public、abstract类型的

③接口没有构造方法,不能被实例化

④一个接口不能实现另一个接口,但它可以继承多个其他接口

⑤接口必须通过类来实现它的抽象方法

⑥ 一个类只能继承一个直接父类,但能实现多个接口

八、语法

① 修饰符 interface 接口名 extends 父接口1,父接口2....{

//常量定义

//方法定义

}

② class 类名 extends 父类名 implements 接口1,接口2....{

//类成员

}

一个小例子:

使用java接口来模拟生活中的USB接口

1、先定义USB接口,通过service()方法提供服务

public interface Usbinterface{void service();
}

2、定义U盘类,实现USB接口中的service()方法,进行数据传输

复制代码
复制代码
public class UDisk implementd UsbInterface{
public void service()
{
System.out.println("连接USB口,开始数据传输!");}}
复制代码
复制代码

3、定义USB风扇类,实现USB接口中的service()方法,获得电流使风扇转动

复制代码
复制代码
public class UsbFan implementd UsbInterface{
public void service()
{
System.out.println("连接USB口,获得电流,风扇开始转动!");}}
复制代码
复制代码

4、编写测试类

复制代码
复制代码
public class Test{
public static void main(String[]args){
//u盘
UsbInterface uDisk=new UDisk();
uDisk.service();//USB风扇
UsbInterface usbFan=new UsbFan();
usbFan.service();}}
复制代码
复制代码

转载于:https://www.cnblogs.com/WuXuanKun/p/5542359.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

请检查virtualboxapi是否正确安装_电机行业安装绝缘轴承规范

1.安装前检查轴承安装前&#xff0c;请检查滚动体表面是否有毛刺&#xff0c;划痕或裂缝。 轴承的径向游隙和轴向游隙是否合格&#xff0c;通常仅测量径向游隙。 其次&#xff0c;检查轴承型号是否正确。 有关滚动轴承的径向游隙标准&#xff0c;请参见下表。 例如&#xff1a;…

matlab时域离散信号与系统,时域离散信号和系统的频域分析

信号与系统的分析方法有两种&#xff1a;时域分析方法和频域分析方法。在连续时间信号与系统中&#xff0c;信号一般用连续变量时间t的函数表示&#xff0c;系统用微分方程描述&#xff0c;其频域分析方法是拉普拉斯变换和傅立叶变换。在时域离散信号与系统中&#xff0c;信号用…

genymotion 此应用与您的手机不兼容

2019独角兽企业重金招聘Python工程师标准>>> 安装arm芯片的转换包&#xff0c;转换包的下载地址&#xff1a;http://pan.baidu.com/s/1dE2EqAH 只要把下载下来的压缩包拖动到模拟器中&#xff0c;点击确定后安装。 安装完成后&#xff0c;需要重启模拟器。 转载于:h…

安卓按钮设置背景颜色不管用_MIUI10新功能:时钟背景黑白自选、公交卡自定义时段唤起...

经历清明假与米粉节后&#xff0c;MIUI10恢复开挂模式&#xff0c;开发版每周给大家推送新功能。本期主要跟大家分享两个要点&#xff0c;其一是时钟背景颜色支持用户选择黑色或者白色&#xff0c;其二是NFC刷卡支持设置优先唤醒时间&#xff0c;降低手工切换操作。■时钟背景可…

数字电视 星座图 matlab,数字电视 MER 及星座图剖析

向天明中国电子测量与仪器学会委员随着数字电视的发展&#xff0c;人们越来越重视数字电视的质量问题&#xff0c;数字电视质量的好坏首先是数字电视信号的质量&#xff0c;因此数字电视信号的分析、测试非常重要&#xff0c;本文重点对数字电视信号的MER及星座图剖析。1、广义…

关于ASP.NET 中的主题

2019独角兽企业重金招聘Python工程师标准>>> 网站的外观是否美观将直接决定其受欢迎的程度&#xff0c;这就意味着网站在开发过程中设计和实现美观实用的用户界面是非常重要的。 在ASP.net 2.0之前主要是用样式表css来实现外观设计。但在ASP.Net 2.0之后&#xff0c…

python复数的实部和虚部都是整数嘛_Python学习笔记:从入门到放弃(2)基本语法...

这次主要就记录一下Python中的基本语法&#xff0c;有标识符&#xff0c;注释&#xff0c;行与缩进&#xff0c;print函数输出以及数字类型和字符串标志符&#xff1a;第一个字符必须是字母表中字母或下划线 _ 。标识符的其他的部分由字母、数字和下划线组成。标识符对大小写敏…

傅里叶变换matlab案例,基于matlab的傅里叶变换

例子1作用&#xff1a;使用傅里叶变换找出隐藏在噪声中的信号的频率成分。(指定信号的参数&#xff0c;采样频率为1 kHz&#xff0c;信号持续时间为1秒。)Fs 1000; % 采样频率T 1/Fs; % 采样周期L 1000; % 信号长度t (0:L-1)*T; % 时间向量%%形成一个信号&#xff0c;包含振…

jquery-1.10.2.min.map是什么,怎么用?

jquery-1.10.2.min.map是什么&#xff0c;怎么用&#xff1f;转载于:https://www.cnblogs.com/suoking/p/5545220.html

python点击按钮改变图片_单击tkinter按钮时更改图片

点击了python和一些按钮后&#xff0c;会产生一些颜色变化的按钮当单击按钮时&#xff0c;是否可以更改按钮使用的.gif&#xff1f;我希望它在GPIO引脚关闭时显示ON&#xff0c;在GPIO引脚打开时显示off。在目前我有&#xff1a;#BCM17GPIO.setup(17,GPIO.OUT)colour17StringVa…

WEB渗透—PHP反序列化(八)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…

php拼接xml特殊字符不显示,使用PHP的XML特殊字符

这里不需要编码这些字符. XML字符串可以使用UTF-8或其他编码.根据编码,序列化器将根据需要进行编码.$foo new SimpleXmlElement(<?xml version"1.0" encoding"UTF-8"?>);$foo->addChild(bar, μmol/l, x10 cells/l);echo $foo->asXml();输出…

JBPM工作流入门总结

关于JBPM工作流 1、工作流 工作流是一项分离业务操作和系统流程的技术。工作流由实体(Entity)、参与者(Participant)、流程定义(Flow Definition)、工作流引擎(Engine) 四部分组成。 ① 实体是工作流的主体,是需要随着工作流一起流动的物件(Object)。例如,在一个采购申请批准流…

python打印九九加法表_Python小脚本

1、跑马灯效果跑马灯import osimport timedef main():content人生苦短&#xff0c;我用python....while True:os.system(cls)print(content)time.sleep(0.2)contentcontent[1:]content[0]#if __name____main__:main()2、录入员工姓名及联系方式&#xff0c;并根据姓名进行查询z…

php ues incolde,17秋东财《大学英语2》在线作业三答案

东财《大学英语2》在线作业三试卷总分:100 得分:0一、 单选题 (共 25 道试题,共 100 分)1. My brother is four years older than me and someone I look _____ to, even though he is shorter than me.A. upB. downC. belowD. over满分&#xff1a;4 分2. Newman: I hav…

如何部署 Hyperic ,使得从内网监测外网服务器

2019独角兽企业重金招聘Python工程师标准>>> 环境介绍&#xff1a; 外网服务器&#xff1a; www.InnovateDigital.com 用户名/密码 test/test 内网服务器&#xff1a;192.168.1.125 操作系统都是 Centos 7 64bit 过程&#xff1a; 下载 Hyperic 5.8.5 &#xff0c…

tcp 发送 最大数据量_网络基础知识夯实总结(三):TCP协议

近期分享的网络知识包括HTTP协议、DNS协议、HTTPS协议、TCP协议、IP协议、TCP/IP、Web攻击及其他协议。今天内容是TCP协议。TCP协议1. 传输层2. 作用提供可靠的字节流服务3. 大块数据分割成报文段(segment)4. 三次握手1) 发送端发带SYN标志的数据包给对方。2) 接收端收到后&…

安卓开发语言php,go语言支持安卓开发吗

go语言支持安卓开发。使用golang开发android需要下载安装gomobile&#xff0c;然后有两种开发方式&#xff0c;分别为&#xff1a;1、原生应用开发&#xff1b;2、混合绑定开发。本教程操作环境&#xff1a;windows10系统、GO 1.11.2、thinkpad t480电脑。大概14年的时候go语言…

解决python连接mysql,UTF-8乱码问题

在测试“Bluemix云端数据库服务ClearDB MySQL使用示例———Python开发投票程序”的程序时&#xff0c;从MySQL中读取的中文输出到网页显示都是问号&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 产生乱码问题&#xff0c;通常都是由于几方面的编码不统一导致的&#x…

python伪代码书写规范_代码这样写更优雅(Python 版)(转载)

Python 这门语言最大的优点之一就是语法简洁&#xff0c;好的代码就像伪代码一样&#xff0c;干净、整洁、一目了然。但有时候我们写代码&#xff0c;特别是 Python 初学者&#xff0c;往往还是按照其它语言的思维习惯来写&#xff0c;那样的写法不仅运行速度慢&#xff0c;代码…