Java-接口概念辨析
https://mp.weixin.qq.com/s/HQZhlS-ffgEMqhB2rHax1w
1. 类 是属性成员和方法成员的集合;
2. 父类 是子类相同属性成员和方法成员的集合;
3. 抽象父类 是子类相同属性成员和方法成员的集合,
其中某些方法各个子类虽然都有(具有相同的方法签名),但实现不同,
所以抽象出来放到父类中,作为抽象方法存在;
这样的父类,也就成了抽象父类;
4. 接口 是子类共有常量和相同方法的集合;接口只是沟通的规约,具体而言就是方法签名,不包含实现;
接口与父类是同一个概念层级,而非与类;
接口是观察世界的一个角度;
命名:
1. 类 名词
2. 属性 名词(属性名)、形容词(对象状态)
3. 方法 动词
4. 接口
a. 接口是方法的集合,方法的意思是:做XX;
b. 做有两种形式:把、被;
c. 被:被怎样是动作发起者的把,更应该归到动作发起者的类或接口中;
d. 把:把某某怎么样,即是动作发起者具有怎么样的能力;
形容词:“能执行XX动作的”:
e. 如:java.lang.Runnable, java.awt.Adjustable;
f. 这种方法有两个特点:
i. 名称跟动作绑定,所以一般这种接口只有一个方法;
i. 可能会有很多类能够发起这种动作,使得接口的范围拓宽的过于宽泛;
名词:动作的发起者
g. 如:Filter,可以执行filter的动作;
名词:动作集合的发起者,即可以发起一系列动作的发起者
h. 如:java.awt.LayoutManager, java.awt.MenuContainer;
i. 这个跟抽象类很接近,不考虑多继承的限制基本可以混用;
总结:
1. 相较于抽象父类,优先使用接口;
2. 如果某些方法有共同的实现,则使用抽象父类;
3. 优先使用“能执行XX动作的”命名接口,除非过于概念意涵过于宽泛;
4. 如果需要多继承则必须转换为对接口的多实现;
PS.
5. 如果使用共同的常量,则使用接口:常量值亦是一种规约;
6. 如果有共同的可变属性,则使用抽象父类;
Java-接口概念辨析的更多相关文章
- java 接口概念及使用
package java11; /* 在任何版本的java中,接口都能定义抽象方法 格式: public abstrace 返回值类型 方法名称(参数列表): 注意事项: 1.接口当中的抽象方法,修饰 ...
- Java面向对象----接口概念
接口语法 interface 接口名{ //静态常量,抽象方法 } 特点 接口中只能存放静态常量和抽象方法 java接口是对功能的扩展 通过实现接口,java类可以实现多实现 一个类可以同时继承(ex ...
- 高并发应用中客户端等待、响应时间的推算,及RT/QPS概念辨析
高并发应用中客户端等待.响应时间的推算,及RT/QPS概念辨析 对于一个网站,已知服务端的服务线程数和处理单个请求所需的时间时,该如何算出高并发时用户从点击链接到收到响应的时间?注意这个时间并不等于服 ...
- OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例
转自: http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...
- Java接口的表现形式
一.概念理解 Java接口是一些方法特征的集合,并没有方法的具体实现,类似于电源插座,可以充不同类型的电器,但是必须适配特定的接口规范.接口是抽象化的,所以其不能被实例化的(不能有构造函数,创建对象) ...
- C++ Concept 和Java 接口
C++ Concept 和Java 接口 Concept及接口 我会用Java写个case来解释什么是C++的Concept.Concept可以理解为接口,它是一种广义的接口.不同于Java的Inte ...
- Java:接口继承接口 (多继承机制)
在看API文档时,突然发现一个接口可以是其他接口的子接口,这说明接口之间会存在继承的关系.查找了相关的资料,做一个总结. 是继承还是实现 首先要搞清楚接口之间的关系使用的关键字是extends还是im ...
- 教你在Java接口中定义方法
基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...
- Java 接口基础详解
目录 Java接口示例 实现一个接口 接口实例 实现多个接口 方法签名重叠 接口变量 接口方法 接口默认方法 接口与继承 继承与默认方法 接口与多态性 在Java中,接口是一个抽象类型,有点类似于类, ...
- 我对面向对象设计的理解——Java接口和Java抽象类
在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解. 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有 ...
随机推荐
- CC2530ADC应用
ADC单通道外部电压采集 需要设置一个上机位命令控制字符. 系统时钟初始化——32MHZ晶振 串口0函数初始化——设置串口对应引脚,波特率,清楚中断标志 串口0接收中断响应函数——U0DBUF将控制命 ...
- SpringCloudStream学习(三)RabbitMQ中的惰性队列
从RabbitMQ 3.6.0之后,有了 Lazy Queues 的概念-一个会尽早的将队列中的内容移动到磁盘的队列,并且只有当消费者需要的时候,才会将它们加载到内存中 惰性队列设计的一个主要 ...
- 09_CSS入门和高级技巧(7)
浏览器兼容问题 1.现在中国网民用什么浏览器? 中国流量最大的网站就是百度,百度在统计着每一个访问者的浏览器.地域.操作系统.分辨率等等信息. 百度流量研究院:http://tongji.baidu. ...
- 06_CSS入门和高级技巧(4)
复习 CSS : 负责样式层,层叠式样式表cascading style sheet.CSS2.1,最新版本CSS3. CSS选择器: 选择哪些元素加样式.基本选择3种:标签p.id选择器#id.cl ...
- QTableWidget自定义委托
QTableWidget单元格使用自定义的lineEdit控件导致不能选中 使用自定义委托解决 1.自定义委托 class LineEditDelegate : public QItemDelegat ...
- Ubuntu1804 源码阅读神器,egypt+graphviz 图形化显示函数调用关系(超详细+图文并茂)
函数调用图可以让我们更加直观地了解到源码函数直接的调用和层次关系,提高阅读源码的效率,工欲善其事,必先利其器: 文章目录 1 前言 2 graphviz 安装 3 egypt 安装 4 测试 5 结论 ...
- LeetCode寻找两个有序数组的中位数
题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ...
- Netty入门一:何为Netty
先了解java的网络编程 Netty为何支持高并发 netty是基于java的nio非阻塞通信,而原始的阻塞通信无法满足高并发.下面我们通过两幅图来简要说明 BIO: 这种模式下一个线程处理一个连接, ...
- android 百度地图v3.2.0获取实际地址
百度地图升级到v3.2.0后,api发生挺大的变化的,但是下载的Demo却不是最新版本的. 在v3.2.0之前获取详细地址只要:option.setIsNeedAddress(true); 但是升级后 ...
- python实现三级菜单源代码
8月4号早晨天气晴,继续学习‘Alex’的python视频,写了用字典实现三级菜单的代码,都是循环和判断比较lower,废话不多说直接贴码: #!/user/bin/env python #-*-co ...