java 多态 降低耦合_java多态

Java多态就是为了降低耦合,方便我们开发的一种特性。

比如我写了一个动物的接口。然后我通过接口实现了猫和狗这个类。

在我需要使用的时候我可以这样实例化对象

动物 w = new 猫。

这就是向上转型。

这里就有一点疑问了,我们开发人员为啥不直接写个猫和狗的类。为啥偏偏要写一个接口。这不是在多此一举吗?

下面就我个人理解,仅供参考。

java是什么,是一个面向对象的工程型语言。这意味着啥,这意味着我们可能几十个人,或者几百个人一起开发同一个项目。

一个人有一个自己的开发习惯,如果我们所有人开发人根据需求,自己搞自己的代码块或者功能。那万一我们几十个人写完了发现,我靠,怎么代码合在一起的时候怎么到处都是错(变量,方法名不一致等等),程序跑不动了呀。

这样一搞,说个屁,效率多低呀。不行,不能这样搞开发。

然后就要有个开发项目的规范,刚才说了,每个开发人员有自己的开发习惯,那怎么规范嘛?这时候,就需要大佬上场了。谁来当老大嘛,没办法,就找那个头发最少的,写代码写的最多的人来当标准吧。

这样也可以服众,毕竟人家是前辈,人家代码写的多,把他来当标准,没啥问题。

那么问题来了,具体怎么规范呢?这时候就需要接口这个概念了。

那个头发最少的大佬,来写项目的规范(接口),那些接口里面有我们普通开发人员必须要实现的方法和变量。

打个比方我是这个大佬(小声bb),我写个接口,然后别人来实现我的接口。这时候别人所实现的接口的方法名和重要变量名全是我说了算,我喜欢驼峰规则的命名,他实现的时候一个字母都不能改。如果改了,当时开发工具就会提醒你在乱搞,就会报错就可以及时纠正。不像开始那样,一个人喜欢用驼峰英文,另一个人喜欢拼音。自己搞的时候没问题啊,结果到最后和别人的代码一起的时候就错了,这个就容易出问题。效率太低了。

所以在我看来,接口就是大佬发给普通开发人员的任务列表,接口里面的方法就是开发人员需要去做的任务。必须完成,不然没工资。如果你自己去找任务做,不看我的任务列表(接口)。结果出问题领不到工资,这可是你的责任,赖不着团队。搞不好团队还要找你麻烦,耽误我们开发进度。

这就是我对接口的理解。

接口的作用在于大项目的多人协同开发,可以分工和最后统一代码。你来实现这个接口,我来实现这个接口(分工),最后上交工作成果的时候,大佬一看,嗯,是服从的我的开发规范,按道理是不会出问题的。

当然,你自己一个人或者人少的时候写小项目,不用接口,也是可以的啊。没问题。

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

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

相关文章

jap和java有关系吗_hibernate与jpa有什么区别和联系?

~JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。Hibernate,当今很流行的ORM框架,是JPA的一个实现,但是其功能是JPA的超集。JPA和Hibernate之间的关系,可以简单的理解为JPA是标…

python找房源_Python租房信息分析!找到最适合自己的房源信息!

原标题:Python租房信息分析!找到最适合自己的房源信息!租房信息分析import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfile_data pd.read_csv("./data/链家北京租房数据.csv")file_dat…

php 任意字符串_php 生成任意长度字符串的类(只含有数字 只含有字母 混合数字和字母)...

[php]代码库/** 生成随机字符串的类,默认只包含数字、大小写字母*/class randomString {/** 生成的字符串包含的字符设置*/const NUMERIC_ONLY 1; //只含有数字const LETTER_ONLY 2; //只含有字母const MIXED 3; //混合数字和字母/** 用户传入变量,分…

python添加时间戳_在python中添加时间戳

这两个解决方案(AFAIK)都可以在python的任何2.x版本上运行(因此保证了相当多的向后兼容性)仅依赖于regex库的实现:import redata 2011-03-07 0:27:412011-03-06 0:13:412011-03-05 0:17:402011-03-04 0:55:402011-05-16 0:55:402011-05-16 0:55:402011-07-16 0:55:…

php 删除某个文件夹,Php删除指定文件与文件夹的方法

例子:复制代码 代码示例://删除指定目录(文件夹)中的所有文件函数function delfile($dir) {if (is_dir($dir)) {$dhopendir($dir);//打开目录//列出目录中的所有文件并去掉 . 和 ..while (false ! ( $file readdir ($dh))) {if($file!"." && $fi…

python 按月份分组_django ORM queryset按月、周、TruncMonth分组

如何在Django ORM中对datetime字段进行group by查询?在型号:class test1(models.Model):id models.AutoField(primary_keyTrue, uniqueTrue, verbose_nameid)name models.CharField(verbose_namename, max_length200)cdate models.DateField(verbose_…

explode php 报错,ecshop在php5.4下报错怎么办

ecshop在php5.4下报错的解决办法:1、打开“cls_template”文件,并修改“$tag_selarray_shift(explode( ,$tag));”;2、修改“static”;3、修改cls_captcha文件。本教程操作环境:windows7系统、PHP5.4版、Dell G3电脑。…

python response.json()报错_解决Django响应JsonResponse返回json格式数据报错问题

解决Django响应JsonResponse返回json格式数据报错问题,给大家,报错,代码,图书,希望能解决Django响应JsonResponse返回json格式数据报错问题易采站长站,站长之家为您整理了解决Django响应JsonResponse返回json格式数据报错问题的相关内容。代码return JsonResponse({…

php 实例 规范,PHP开发规范实例详解

本文主要和大家分享PHP开发规范实例详解&#xff0c;希望能帮助到大家。源文件代码使用<?php开头 &#xff0c;忽略闭合标签?>文件格式必须是无BOM UTF-8格式一个文件只声明一种类型&#xff0c;如class和interface不能混写在一个源文件中缩进使用4个空格来缩进&#x…

sql 相加_SQL经典题型

SQL内容及常见面试题如下&#xff1a;以下为具体的面试题内容和答案一、简单查询题目查询姓“猴”的学生名单查询姓名中最后一个字是“猴”的学生名单查询姓名中带“猴”的学生名单查询姓“孟”老师的个数二、汇总分析题目查询课程号为“0002”的总成绩查询选了课程的学生人数查…

centos编译apache php mysql,在CentOS6.7中编译安装 apache php mysql

安装 开发工具 yum groupinstall "Development Tools" ------------------------------ tar -jxvf apr-1.5.2.tar.bz2 cd apr-1.5.2 ./configure --prefix/usr/local/apr make && make install ----------------- tar -jxvf apr-util-1.5.4.tar.bz2 cd apr-u…

python为什么虚部是j不是i_Python基础02 基本数据类型

简单的数据类型以及赋值变量不需要声明Python的变量不需要声明&#xff0c;你可以直接输入&#xff1a;>>>a 10那么你的内存里就有了一个变量a&#xff0c; 它的值是10&#xff0c;它的类型是integer (整数)。 在此之前你不需要做什么特别的声明&#xff0c;而数据类…

php array 如何访问,php – 如何访问$array [@key]值

我正在使用expedia API并且它运行良好,但我不知道如何访问这种特殊类型的数组键.回复如下$response stdClass Object([size] > 1[activePropertyCount] > 144[city] > 1[hotelId] > 12345[HotelSummary] > stdClass Object([order] > 0[ubsScore] > 10748…

基于stm32f429的手写识别_关注智能手机老年用户:百度输入法手写模型迎来重磅升级...

智能手机的快速普及让很多人都已经习惯于任何事情都用手机办理&#xff0c;不仅外出买东西、乘坐公共交通可以使用智能手机支付&#xff0c;同时一些与工作、政务相关的事情也可以在智能手机端完成&#xff0c;而社交工具更是让人们几乎已经不再使用短信、电话功能&#xff0c;…

如何安装ipython notebook_IPython notebook安装指导

1.环境准备yum -y install sqlite-devel #在安装Python之前执行&#xff0c;ipython notebook依赖sqlite执行pip install ipythonpip install notebookpip install pysqlite #ipython notebook 依赖sqlite数据库&#xff0c;必须安装后才能使用[错误处理]如果安装sqlite-devel后…

Html页面上输出不了PHP,在页面上直接输出未经解析的HTML源码

摘要&#xff1a;<?php $str6$我在\php中文网\学习 PHP 和 HTML &#xff0c;目前我还是&小白&。;echo $str6,;//\, 、$str6$我在\php中文网\学习 PHP 和 HTML &#xff0c;目前我还是&小白&。;echo $str6,;//\, 、标签、&等均被解析输出echo htmlspec…

python po设计模式_(Python)PO设计模式

无规矩不成方圆。编写代码也是&#xff0c;如果没有大概的框架&#xff0c;管理代码将会是一件很头疼的事。先看看笔者以前写的python脚本&#xff1a;如果只有一个用例&#xff0c;这样看着好像挺整洁的。但是当用例越来越多后&#xff0c;如果元素定位发生了改变&#xff0c;…

php strtok函数,strtok函数的使用示例

strtok函数是字符串函数库中的一个函数&#xff0c;函数原型如下&#xff1a;char *strtok(char s[], const char *delim);作用&#xff1a;分解字符串为一组字符串。s为要分解的字符串&#xff0c;delim为分隔符字符串。例如&#xff1a;"hello,hi:what?is!the.matter;&…

python 滑块验证码_python selenium 淘宝滑块验证码 问题

正常打开淘宝等页面&#xff0c;搜索商品和滑块验证码是没有问题的&#xff0c;但是用selenium打开&#xff0c;在多次翻页后出现的滑块验证码就总是失败&#xff0c;无论是手动滑还是代码控制都不可以&#xff0c;目前正在找解决办法。。。此问题针对多次翻页出现的滑块验证码…

php框架m方法详细,Thinkphp框架中D方法与M方法的区别是什么

Thinkphp框架中D方法与M方法的区别是什么发布时间&#xff1a;2021-02-06 23:09:38来源&#xff1a;亿速云阅读&#xff1a;69作者&#xff1a;小新小编给大家分享一下Thinkphp框架中D方法与M方法的区别是什么&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文…