多态的引入--java进阶day02
1.多态的介绍
总的来说就是一句话,使用多态,所有的子类都可以根据父类这个桥梁来连接它们各自的成员方法,从而调用方法,减少多次的代码重写,使代码更加简单便捷

我们以之前说的公司写业务为例子来理解多态,假设公司现在又要管理国外的业务,此时我们就需要重写一份关于国外的方案
从该业务上,也能看出接口的好处,我们直接写一个国外类实现接口,再按照规则重写方法即可,方便快捷

接下来我们就简单写个菜单,用于判断是要国内的业务还是国外的业务
分别创建国内对象和国外对象,然后去实现对应的方法

虽然完成了业务,但我们会发现这些代码非常臃肿,而且很多方法都相似,只是对象不同,这时,我们就可以使用多态进行优化代码 如图
我们先声明了这两个类的干爹--接口(orderService),然后把这些相似的方法抽取了出来,当数字是1时,我们用接口去接收国内对象,数字是2时,接口接收国外对象,然后再用接口去调用这些方法

方法报错的原因是没有给接口初始化,如果数字既不是1又不是2就没有值,引用数据类型,我们就给其赋为null

此时就没有任何冗余的代码了,并且可以正常运行
.

我们调用的是同一套方法,却有不同的运行效果,一个方法却有不同的表现形式,这不就是多态的介绍吗

看到这里,大部分人肯定会有疑问,为什么类型都不一致,还可以创建对象?这里只是向大家展示多态的意义,先摆出两个问题,之后再进行解答

多态的引入--java进阶day02的更多相关文章
- 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?
		转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ... 
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
		原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ... 
- Java线程间通信方式剖析——Java进阶(四)
		原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ... 
- Java进阶01 String类
		链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ... 
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
		本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ... 
- Java进阶(三十七)java 自动装箱与拆箱
		Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ... 
- Java进阶之路
		Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ... 
- Java 进阶7 并行优化 JDK多任务执行框架技术
		Java 进阶7 并行优化 JDK多任务执行框架技术 20131114 Java 语言本身就是支持多线程机制的,他提供了 Thread 类 Runnable 接口等简单的多线程支持工 ... 
- Java 进阶6 异常处理的陷阱
		Java 进阶6 异常处理的陷阱 20131113 异常处理机制是 Java语言的特色之一,尤其是 Java的Checked 异常,更是体现了 Java语言的严谨性:没有完善的错误的代码根本就不会被执 ... 
- Java进阶2 数组内存和对象的内存管理知识
		Java进阶2 数组内存和对象的内存管理知识 20131028 前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏 ... 
随机推荐
- ThreeJs-12使用着色器加工材质
			一.three框架材质原理与应用 其实three里面所有的材质不管是基础还是点等等之类最终都会编译为shader然后执行,所以如果拿到一个材质我想对某个地方小改一下,那么也是可以用shader来进行修 ... 
- kubernetes 使用ceph实现动态持久卷存储
			k8s使用ceph存储 ceph提供底层存储功能,cephfs方式支持k8s的pv的3种访问模式ReadWriteOnce,ReadOnlyMany ,ReadWriteMany ,RBD支 ... 
- CCS(TI IDE)中英文切换
			介绍 使用CSS时会遇到中英文切换的问题,使用中文可以方便我们更好的开发,但是由于一些专业名词的原因我们有时候又需要英文环境,所以中英文切换就显得十分重要. 由于CCS基于eclipse开发,所以CC ... 
- 从Linux零拷贝深入了解I/O
			转载&学习文章:从Linux零拷贝深入了解I/O 本文将从文件传输场景以及零拷贝技术深究 Linux I/O 的发展过程.优化手段以及实际应用. 前言 存储器是计算机的核心部件之一,在完全理想 ... 
- vue3.5保证你看得明明白白
			子组件中设置默认属性 <template> <div class="child-page"> <h1>我是子组件</h1> < ... 
- h5使用vue-photo-preview 做全屏预览
			h5页面使用全屏预览 最近需要在微信小程序中跳转到h5页面 在h5页面中需要进行图片预览展示 由于没有使用第三方的组件库. 只能手写,但是时间很紧张. 所以只能够寻找第三方的插件 vue-photo- ... 
- oracle 删除过期归档脚本
			一.定时任务 crontab -e 编辑 每周6凌晨3点执行脚本 0 3 * * 6 . /home/oracle/scripts/arch_delete_before_60days_arch.sh ... 
- Kyuubi支持Iceberg配置
			一.简述 Kyuubi调用Spark来查询iceberg表,修改Spark配置信息即可. 二.服务配置 1.上传jar包到Kyuubi server节点 可以选择emr spark组件后,按照配置组( ... 
- docker - [16] Swarm集群搭建
			以下是购买的阿里云服务器ECS的四个实例,确保四台服务器互相可以ping通. 一.环境准备(安装docker) (1)安装gcc相关环境(在四台服务器上) yum -y install gcc yum ... 
- Ansible - [09] 高级语法
			error 处理机制 默认 ansible 在遇到 error 会立刻停止 playbook [root@control ansible]# cat ~/ansible/error.yml --- - ... 
