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. 【Spring Framework】Spring IOC详解及Bean生命周期详细过程

    Spring IOC 首先,在此之前,我们就必须先知道什么是ioc,ioc叫做控制反转,也可以称为依赖注入(DI),实际上依赖注入是ioc的另一种说法, 1.谁控制谁?: 在以前,对象的创建和销毁都是 ...

  2. 【Linux】【Shell】【text】文本处理工具

    文本查看及处理工具:wc, cut, sort, uniq, diff, patch wc:word count wc [OPTION]... [FILE]... -l: lines -w:words ...

  3. 【力扣】146. LRU缓存机制

    运用你所掌握的数据结构,设计和实现一个  LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果关键字 (key) ...

  4. 【Matlab】abs不支持复整数

    需要将uint8转换成double型数据才能计算 https://blog.csdn.net/lihe4151021/article/details/89372688 图像数据格式uint8与doub ...

  5. 【C/C++】例题3-6 环状序列/算法竞赛入门经典/数组和字符串

    [字典序比较] 对于两个字符串,比较字典序,从第一个开始,如果有两位不一样的出现,那么哪个的ASCII码小,就是字典序较小.如果都一样,那么短的小. [题目] 输入一个环状串,输出最小的字典序序列. ...

  6. Mysql资料 查询条件

    目录 一.计算 二.比较 三.逻辑运算符 四.位运算符 五.优先顺序 一.计算 二.比较 三.逻辑运算符 四.位运算符 五.优先顺序 实际上,很少有人能将这些优先级熟练记忆,很多情况下我们都是用&qu ...

  7. CF1506A Strange Table 题解

    Content 给定一个 \(n\times m\) 的矩阵.一开始,\((1,1)\) 所在位置上面的数是 \(1\),随后先由上往下将这一列中的所有位置上面填上 \(2,3,\dots,n\),再 ...

  8. CF1057B DDoS 题解

    Content 有一个长度为 \(n\) 的数列 \(a_1,a_2,...,a_n\),求出满足 \(\sum\limits_{i=l}^r a_i>100\times(r-l+1)\) 的区 ...

  9. props 使用场景 及 布局提升

    一对一一边写html 一边写css一小块为单位html csscss html整块单位html csscss html react/first-react/src/views/Wk/index.jsx ...

  10. Json解析案例-teachers数据集

    背景: 通过平台执行接口时,接口往往返回的JSON串,所以平台要能提供方便快捷的JSON解析函数. 一.Json字符串: 1 { 2 "lemon": { 3 "teac ...