Java中的对象、类、抽象类、接口的理解
1.对象
对象是个具体的东西,有着明确的属性特征和行为特征。
例如:你手上牵着的女朋友或男朋友就是个具体的对象。
如图中的苏格兰折耳猫,特征是耳朵向下呈折叠状,有着具体的颜色(你看到的颜色),并且和其他猫科动物有着共同的基本特征。
2.类
类是个抽象的东西,有着一些基本属性和行为。
例如:你的对象是某类人(男人、女人等),但具体是哪个就不知道了,因为Ta还没出现(还没实例化)。
以下三个都是同一类猫,统称为苏格兰折耳猫,特征是耳朵向下呈折叠状,会有先天骨科疾病,进而影响运动能力,时常用坐立的姿势来缓解痛苦,但和其他猫科动物有着共同的基本特征。这三个猫都有着相同的属性(折耳,有病等),也有着不同的属性(肤色等),但都是同一类猫,统称为苏格兰折耳猫。
类和对象的关系
类是对象的抽象,对象是类的具体实现。
如:我们在工作中获取经验,为了传授经验,前人把经验抽象为理论,再通过理论传授知识给后人,后人获取到知识后需要通过实践来巩固知识。
经验--抽象-->理论,理论--实践-->经验;
对象--抽象-->类, 类--实例化-->对象。
抽象的过程相对于设计,实例化的过程相对于应用。
3.抽象类
抽象类是对类的进一步抽象。其实普通类也可以实现抽象类的功能,但抽象类可以做到强制不能实例化,只能通过继承的方式传递属性和方法,并且需要实现抽象方法。
如:把猫科动物定义为抽象类,不同的某一类猫的名称都不相同,需要继承重写猫类名称(如苏格兰折耳猫类)。
对象、类和抽象类关系图
4.接口
接口是某个事物对外提供的一些功能的说明,是一个规范,类似于硬件上面的接口。
例如:猫和狗都会发出声音(说话),一般把这类功能封装为接口,然后通过实现接口便可以获得该功能。
抽象类和接口
a.抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高;
b.抽象类可以有具体的方法和属性, 接口只能有抽象方法和常量(接口后来允许有具体方法);
c.抽象类主要用来抽象类别,接口主要用来抽象功能(只能使用常量,一般定义公共固定属性);
d.抽象类实现接口时,接口的方法在抽象类中可以被实现也可以不被实现,而普通实现接口必须实现所有接口方法。
「何时使用抽象类或接口」
当你关注一个事物的「本质」的时候,一般用「抽象类」;
当你关注一个事物的「功能」的时候,一般用「接口」。
「例子中四者关系图」
Java中的对象、类、抽象类、接口的理解的更多相关文章
- Java中的实体类--Serializable接口、transient 关键字
在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...
- 关于Java中的对象、类、抽象类、接口、继承之间的联系
关于Java中的对象.类.抽象类.接口.继承之间的联系: 导读: 寒假学习JavaSE基础,其中的概念属实比较多,关联性也比较大,再次将相关的知识点复习一些,并理顺其中的关系. 正文: 举个例子:如果 ...
- java中的对象、类、包、模块、组件、容器、框架、架构的概念入门
在Java中有那么一些概念:对象.类.包.模块.组件.容器.框架.这些概念都有一个共同的特点,就是[容纳]. 对象(Object) 在Java的世界里,对象是通过属性和方法来分别对应事务所具有的静态属 ...
- 在java中,List是个接口,那实现List接口的类有哪些,有什么区别?
在java中,List是个接口,那实现List接口的类有哪些,有什么区别? 解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引 ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
- javaAPI中的常用 类 以及接口
java.lang包中的常用类以及接口 类 1. Integer :Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 2. Math ...
- Java基础(43):Java中的Object类与其方法(转)
Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...
- java 中常用的类
java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l static double abs(double a) 获取double 的绝对值 l sta ...
- 【学习笔记】Java中生成对象的5中方法
概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.re ...
- 【Java】Java中的Collections类——Java中升级版的数据结构【转】
一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...
随机推荐
- 【Spring Framework】Spring入门教程(六)Spring AOP使用
Spring的AOP 动态代理模式的缺陷是: 实现类必须要实现接口 -JDK动态代理 无法通过规则制定拦截无需功能增强的方法. Spring-AOP主要弥补了第二个不足,通过规则设置来拦截方法,并对方 ...
- 移动端(App)项目进行满屏高度的设置
做移动端App的时候 高度一般会根据页面的元素进行自动设置,不会铺满整个屏幕.通过以下代码实现满屏高度. #app{ width: 100%; height: 100%; position: abso ...
- Maven的聚合工程(多模块工程)
在开发2个以上模块的时候,每个模块都是一个 Maven Project.比如搜索平台,学习平台,考试平台.开发的时候可以自己管自己独立编译,测试,运行.但如果想要将他们整合起来,我们就需要一个聚合工程 ...
- 【C/C++】字符数组:char,char*,char a[], char *a[], char **s 的区别与联系/const char*和char*的区别
一.char,char*,char a[], char *a[], char **s 的区别与联系 C语言中的字符串是字符数组,可以像处理普通数组一样处理字符串. 可以理解为在内存中连续存储的字符. ...
- last显示出unknown用户
这问题是群里有朋友发了一张照片看到的: 出现问题第一时间当然是百度或者谷歌,结果还是查到了,原来是gdm作怪,也可以认为是bug 该用户由GDM创建(可能是由于错误).并不是真的有"未知&q ...
- [BUUCTF]REVERSE——[BJDCTF2020]JustRE
[BJDCTF2020]JustRE 附件 步骤: 例行查壳儿,无壳儿,32位程序 32位ida载入,main函数没看懂,shift+f12检索了一下程序里的字符串,发现了一个类似于flag的字符串 ...
- 2020腾讯犀牛鸟网络安全T-Star高校挑战赛writeup
签到 浏览器禁用js,在www目录下有 key 命令执行基础 使用 | 可以执行其他命令,在 ../目录下有 key.php cat 一下读出来 你能爆破吗 一开始随便输了个账号的时候不是这个页面,抓 ...
- 小迪安全 Web安全 基础入门 第七天 - 资产泄漏、CMS识别、Git监控、SVN、DS_Store、备份
一.CMS指纹识别源码获取方式 1.网站特有文件.如/templets/default/style/dedecms.css-dedecms. 2.网站独有文件的MD5.如favicon.ico但是该文 ...
- odoo views中html的奇怪问题
在我创建了字段类型为 fields.Html 以后,确出现了两种不同的情况 下图中,content是此类型的,可以正常显示不需要加widget(小部件)="html" <fo ...
- CF1454A Special Permutation 题解
Content 给定一个整数 \(n\),请构造出一个长度为 \(n\) 的排列 \(\{a_i\}_{i=1}^n\),使得对于每个 \(a_i\),都有 \(a_i\neq i\). 我们称一个长 ...