1.对象

对象是个具体的东西,有着明确的属性特征和行为特征。

例如:你手上牵着的女朋友或男朋友就是个具体的对象。

如图中的苏格兰折耳猫,特征是耳朵向下呈折叠状,有着具体的颜色(你看到的颜色),并且和其他猫科动物有着共同的基本特征。

2.类

类是个抽象的东西,有着一些基本属性和行为。

例如:你的对象是某类人(男人、女人等),但具体是哪个就不知道了,因为Ta还没出现(还没实例化)。

以下三个都是同一类猫,统称为苏格兰折耳猫,特征是耳朵向下呈折叠状,会有先天骨科疾病,进而影响运动能力,时常用坐立的姿势来缓解痛苦,但和其他猫科动物有着共同的基本特征。这三个猫都有着相同的属性(折耳,有病等),也有着不同的属性(肤色等),但都是同一类猫,统称为苏格兰折耳猫。

  

类和对象的关系

类是对象的抽象,对象是类的具体实现。

如:我们在工作中获取经验,为了传授经验,前人把经验抽象为理论,再通过理论传授知识给后人,后人获取到知识后需要通过实践来巩固知识。

经验--抽象-->理论,理论--实践-->经验;

对象--抽象-->类, 类--实例化-->对象。

抽象的过程相对于设计,实例化的过程相对于应用。

3.抽象类

抽象类是对类的进一步抽象。其实普通类也可以实现抽象类的功能,但抽象类可以做到强制不能实例化,只能通过继承的方式传递属性和方法,并且需要实现抽象方法。

如:把猫科动物定义为抽象类,不同的某一类猫的名称都不相同,需要继承重写猫类名称(如苏格兰折耳猫类)。

对象、类和抽象类关系图

4.接口

接口是某个事物对外提供的一些功能的说明,是一个规范,类似于硬件上面的接口。

例如:猫和狗都会发出声音(说话),一般把这类功能封装为接口,然后通过实现接口便可以获得该功能。

抽象类和接口

a.抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高;

​b.抽象类可以有具体的方法和属性,  接口只能有抽象方法和常量(接口后来允许有具体方法);

c.抽象类主要用来抽象类别,接口主要用来抽象功能(只能使用常量,一般定义公共固定属性);

d.抽象类实现接口时,接口的方法在抽象类中可以被实现也可以不被实现,而普通实现接口必须实现所有接口方法。

「何时使用抽象类或接口」

当你关注一个事物的「本质」的时候,一般用「抽象类」
当你关注一个事物的「功能」的时候,一般用「接口」

「例子中四者关系图」

Java中的对象、类、抽象类、接口的理解的更多相关文章

  1. Java中的实体类--Serializable接口、transient 关键字

    在java中,实体类是一个非常重要的概念,我们可以在实体类中封装对象.设置其属性和方法等.关于实体类,也经常涉及到适配器模式.装饰者模式等设计模式.那么在实际代码开发中,关于实体类的注意事项有哪些呢? ...

  2. 关于Java中的对象、类、抽象类、接口、继承之间的联系

    关于Java中的对象.类.抽象类.接口.继承之间的联系: 导读: 寒假学习JavaSE基础,其中的概念属实比较多,关联性也比较大,再次将相关的知识点复习一些,并理顺其中的关系. 正文: 举个例子:如果 ...

  3. java中的对象、类、包、模块、组件、容器、框架、架构的概念入门

    在Java中有那么一些概念:对象.类.包.模块.组件.容器.框架.这些概念都有一个共同的特点,就是[容纳]. 对象(Object) 在Java的世界里,对象是通过属性和方法来分别对应事务所具有的静态属 ...

  4. 在java中,List是个接口,那实现List接口的类有哪些,有什么区别?

    在java中,List是个接口,那实现List接口的类有哪些,有什么区别? 解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引 ...

  5. 将java中Map对象转为有相同属性的类对象(json作为中间转换)

    java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...

  6. javaAPI中的常用 类 以及接口

    java.lang包中的常用类以及接口 类 1. Integer :Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 2. Math ...

  7. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

  8. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  9. 【学习笔记】Java中生成对象的5中方法

    概述:本文介绍以下java五种创建对象的方式: 1.用new语句创建对象,这是最常用的创建对象的方式. 2.使用Class类的newInstance方法 3.运用反射手段,调用java.lang.re ...

  10. 【Java】Java中的Collections类——Java中升级版的数据结构【转】

    一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数 ...

随机推荐

  1. canal整合springboot实现mysql数据实时同步到redis

    业务场景: 项目里需要频繁的查询mysql导致mysql的压力太大,此时考虑从内存型数据库redis里查询,但是管理平台里会较为频繁的修改增加mysql里的数据 问题来了: 如何才能保证mysql的数 ...

  2. Spring.DM web开发环境搭建

    作为一个初学者来说,搭建好Spring.DM 的web开发环境还是有些麻烦的.我就遇到了N多麻烦,走了很多弯路.本文介绍了2种比较简单的搭建Spring.DM OSGi web开发环境的搭建.   第 ...

  3. SpringBoot+MybatisPlus实现批量添加的两种方式

    第一种: 因为Mysql数据每次发送sql语句的长度不能超过1M,所以,每次发送insert语句以固定长度发送: 将sql语句在provider中,以固定长度装入List集合中,然后返回service ...

  4. Redis-5种基础数据结构

    Redis基础数据结构 知识整理源于<Redis深度历险 核心原理与应用实践>这本书 Redis 有的数据结构都以 唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 ...

  5. java中的迭代器的含义

    可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍.迭代的过程需要依赖一个迭代器对象,那么什么是迭代器呢? 迭代器(Iterator)模式,又叫做游标模式,它的含义是, ...

  6. Spring Boot项目的不同启动方式

    方式一: 直接通过IntelliJ IDEA启动,直接执行Spring Boot项目的main()方法. 方法二: 将项目打包成jar包,首先需要在pom.xml文件的根节点下添加如下配置: < ...

  7. 小飞机可以解决git clone没有返回的问题吗?

    [1]Linux如何使用小飞机? 以ss为例,先下载客户端: https://www.mediafire.com/folder/xag0zy318a5tt/Linux 下载客户端以后,右键把权限中&q ...

  8. 2、Spring的IOC标签介绍以及实例

    一.Spring_ioc配置文件bean标签介绍 1. bean标签 名称:bean 类型:标签 归属:beans标签 作用:定义spring中的资源,受此标签定义的资源将受到spring控制 格式: ...

  9. 前端浅谈-协议相关(DNS协议)

    从应用层到实体层的协议太多了,我们并不能一一涉及,目前来说就打算整理可能会与前端相关的协议. 前端面试常会问到一个问题-"从输入一个url到页面渲染经历了哪些过程".这其实是一个相 ...

  10. [源码解析] PyTorch 分布式(16) --- 使用异步执行实现批处理 RPC

    [源码解析] PyTorch 分布式(16) --- 使用异步执行实现批处理 RPC 目录 [源码解析] PyTorch 分布式(16) --- 使用异步执行实现批处理 RPC 0x00 摘要 0x0 ...