Java编程练习之类的多态

news2025/1/8 4:23:55

类的多态可以从两方面体现:一是方法的重载,二是类的上下转型。

1)方法的重载

方法的重载就是在同一个类中允许同时存在多个同名方法,只要这些方法的参数个数或类型不同即可。

练习1:

使用方法的重载描述所有的超市都支持现金付款,但大型商超还支持刷卡付款。

public class OverLoadTest {
    public static String pay(String a){
        return a;
    }
    public static String pay(String a,String b){
        return (a+b);
    }

    public static void main(String[] args){
        System.out.println("所有的超市都支持"+pay("现金支付"));
        System.out.println("大型商超支持"+pay("现金支付","刷卡支付"));
    }
    }

2)向上转型

把子类对象赋值给父类类型的对象,这种技术被称为"向上转型"。"向上转型"是一个从比较具体的类到较抽象类的转换,向上转型是安全的。在执行"向上转型"操作时,父类的对象无法调用子类独有的属性或者方法。

练习2:对于轿车而言,至少有油门踏板和刹车踏板。模拟自动挡车型的正确驾驶方式,运行结果如下:

class car{
    public static void drive(car c){
        System.out.println("右脚踩油门踏板!");
        System.out.println("右脚踩刹车踏板!");
    }
}
public class Autocar extends car{
    int num=0;
    public static void main(String[] args){
        Autocar a=new Autocar();
        a.num=2;
        System.out.println("自动挡汽车有"+a.num +"块踏板。");
        car b=new Autocar();
        drive(b);
    }
}

3)向下转型

向下转型是将抽象类转换为较具体的类。在做向下转型操作时,将特性范围小的对象转换为特性范围大的对象会出现问题,需要将父类对象强制转换为某个子类对象,这种方式被称为显示类型转换。当使用显式类型转换向下转型时,必须向编译器指明将父类对象转换为哪一种类型的子类对象。

练习3:创建一个旅游胜地类,将其强制转换为九寨沟类,并介绍九寨沟,运行效果如下:

class travel{
    public static void introduce(String t){
        System.out.println(t+"四季景色都十分迷人。");
        System.out.println("春时嫩芽点绿,"+"瀑流轻快;");
        System.out.println("夏来绿荫围湖,"+"莺飞燕舞;");
        System.out.println("秋至红叶铺山,"+"彩琳满目;");
        System.out.println("冬来雪裹山峦,"+"冰瀑如玉;");
        System.out.println(t+"是世界闻名的旅游胜地之一。");
    }
}
public class JiuZhaiGou extends travel{
    public static void main(String args[]){
        System.out.println("中国的旅游胜地有很多:");
        travel t=new JiuZhaiGou();
       // System.out.println(t);
        JiuZhaiGou j=(JiuZhaiGou) t;
        j.introduce("九寨沟");
    }
}

4)instanceof关键字

当在程序中执行向下转型操作时,如果父类对象不是子类的实例,就会发生ClassCastException异常,所以在执行向下转型之前需要使用instanceof关键字判断父类对象是否为子类的实例。instanceof关键字还可以判断某个类是否实现了某个接口。instanceof关键字的语法格式如下:

myobject instanceof ExampleClass

myobject:某类的对象引用;

ExampleClass:某个类

使用instanceof关键字的表达式返回值为布尔值。如果返回值为true,说明myobject对象为ExampleClass的实例;如果返回值为false,说明myobject对象不是ExampleClass的实例。

练习1:判断"鸡是不是鸟"并阐明依据(鸡是鸟的子类,所以鸡是鸟)。

class Bird{//创建鸟类

}
public class Chicken extends Bird{//创建鸟的子类:鸡类
    public static void main(String args[]){
        //创建鸡类对象
        Chicken c=new Chicken();
        if(c instanceof Bird){//判断子类鸡类对象是否为鸟类的实例
            Bird b=(Bird) c;

        }
       //
        System.out.println(c instanceof Bird);
        System.out.println("鸡是鸟的子类,所以鸡是鸟。");
    }
}

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

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

相关文章

分治——快速排序算法

例题一 解法(快排思想 - 三指针法使数组分三块): 算法思路: 类⽐数组分两块的算法思想,这⾥是将数组分成三块,那么我们可以再添加⼀个指针,实现数组分 三块。 设数组⼤⼩为 n &#xff0c…

快速了解LED开关电源的常见故障及如何解决

LED开关电源应用广泛,在我们的生活和工作中无处不在。然而在LED开关电源的实际使用中会出现一些问题和故障,可能会造成电源和LED灯受损。本文纳米软件将为大家介绍常见的LED开关电源的故障以及解决方法。 1. 输出电流不稳定 LED开关电源输出电流不稳定通…

Nuxt2:node-sass替换为sass,避免因依赖python导致Can‘t find Python executable “python“错误

一、问题描述 由于node-sass依赖于python,在缺少python环境时,会报以下错误: npm ERR! gyp ERR! stack Error: Cant find Python executable "python", you can set the PYTHON env variable.当服务器环境不想安装python或者不方…

Vitis报错:fatal error: xxx.h: No such file or directory.

在跑vitis工程文件时出现fatal error: xxx.h: No such file or directory.的错误,出现这种情况的主要是出现在大家用了自定义IP。 记住如果时出现Makefile出现错误,并不是你的代码问题而是软件bug,我们需要更改一些文件才能正常跑。 讲解一下…

如何快速下载GEO数据并获取其表达矩阵与临床信息 | 附完整代码 + 注释

GEO数据库可以说是大家使用频率贼高的数据库啦!那它里面的数据怎么下载大家知道嘛!今天给大家展示一种快速获取它的表达矩阵和临床信息的方法! 话不多说!咱们直接开始! GEO编号获取 在GEO数据库中,你找到…

水牛社:宝妈副业,不仅赚钱更成长:一段充实之旅

大家好!作为一名90后的全职宝妈,今天非常荣幸能够与大家分享我的互联网赚钱经验。趁着宝宝午睡的宝贵时光,我抓紧写下了这篇文章,虽时间紧凑,但我会力求内容清晰明了。 大约从2022年4月开始,我踏上了互联网…

【Node.js】定时任务

Cron表达式 Cron表达式是用于表示定时任务的一种语法。它由6个字段组成,按顺序分别表示分、时、日、月、周几和年份。 * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └── 星期…

【智能算法】蛇优化算法(SO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年,FA Hashim等人受到蛇特殊交配行为启发,提出了蛇优化算法(Snake Optimizer, SO)。 2.算法原理 2.1算法思想 SO算法模拟蛇类的战斗与交配模式…

社会实践 | 暑期社会实践投稿攻略,凤凰网等(央媒/官媒)投稿入口,不同频道发稿详细报价

作为媒体行业的从业者,我们都清楚凤凰网等央媒/官媒的影响力和号召力。如果能在这些平台上发表文章,不仅可以增加个人影响力,还有利于传播自己的观点和思想。然而,很多人可能不知道如何才能在这些媒体上投稿。今天,我要…

错误记录

Packet for query is too large 错误原因 一般是没有修改Mysql允许传输的最大数据包大小,使用 SHOW VARIABLES LIKE %max_allowed_packet%;可以看到默认的大小,一般默认为1M。 处理方法 暂时修改:重启mysql后失效 --修改为10M set global…

鸿蒙开发实例:【demo-搜索历史记录】

图片演示效果: 鸿蒙OS开发更多内容↓点击HarmonyOS与OpenHarmony技术鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或mau123789学习,是v喔 代码演示: // 注:当前代码基于宽度为…

开箱即用的中后台管理模版,建议收藏!

公众号:程序员白特,欢迎一起交流学习~ 原文作者:前端充电宝 大家好,我是白特。 今天来推荐几款开箱即用的中后台管理模版! Vue Element Admin vue-element-admin 是一个后台前端解决方案,它基于 vue 和 …

C++ 迭代器与反向迭代器

目录 一,什么是迭代器 1,定义 2,迭代器的设计思维 3,迭代器种类 二,迭代器与容器 1,容器中的迭代器 2,迭代器失效问题 三,迭代器的类型萃取(traits) …

稀碎从零算法笔记Day28-LeetCode:零钱兑换

前言:鸽了好多天了哈哈哈,虽然C站没更但是LC还是坚持刷的,任重道远啊!(可恶的寝室熄灯) 题型:动态规划 链接:322. 零钱兑换 - 力扣(LeetCode) 来源:LeetCode 题目描述…

城市内涝排水系统最新模型:慧天【HTWATER】与SWMM完美耦合

查看原文>>> 城市内涝水文水动力模型:慧天【HTWATER】 【城市内涝水文水动力模型介绍】 慧天排水数字化分析平台针对城市排水系统基础设施数据管理的需求,以及水文、水力及水质模拟对数据的需求,实现了以数据库方式对相应数据的存…

静态资源动态访问的细节补充import()与new URL

教学视频的补充 静态资源的动态访问【渡一教育】_哔哩哔哩_bilibili import里若用引号拼接,那么打包结果不会有图片 细节1:得用es6的反单引号才可以 细节2:不能以变量结尾 var p 12 //错误import(./assets/ p .jpg).then(res > {console.log(res, res);}) //正确var p…

201812 CSP认证 | CIDR合并

CIDR合并 难是真的不难但是也写了我几个小时服了 这道题在有计网的基础上就很好理解了&#xff0c;没有在格式上有任何刁难你的。这里不讲背景了 官网提交结果以及满分代码如下&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long ll; typedef…

Qt Design Studio 软件怎么用(详细+通俗+有趣)

建议&#xff1a;本文长期更新&#xff0c;建议点赞/收藏&#xff01; 1. 啥是Qt Design Studio&#xff1f; Qt Design Studio 是一个用于设计和开发用户界面的工具&#xff0c;特别适合开发跨平台应用程序。它结合了UI设计和开发的工作流程&#xff0c;使得设计师和开发者可…

​奶茶店小程序有哪些功能

​奶茶店作为饮品行业的一种热门经营模式&#xff0c;拥有自己的小程序可以带来诸多便利和增长机会。在这篇文章中&#xff0c;我们将探讨奶茶店小程序应该具备的功能&#xff0c;以满足消费者的需求&#xff0c;提升店铺的运营效率和用户体验。 1. **在线订购功能**&#xff…

linux文本三剑客 --- grep、sed、awk

1、grep grep&#xff1a;使用正则表达式搜索文本&#xff0c;将匹配的行打印出来&#xff08;匹配到的标红&#xff09; 命令格式&#xff1a;grep [option] pattern file <1> 命令参数 -A<显示行数>&#xff1a;除了显示符合范本样式的那一列之外&#xff0c;并…