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. Druid数据库监控

    一.简介 Druid是阿里开源的一个JDBC应用组件, 其包括三部分: DruidDriver: 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource ...

  2. layui-入门

    1.下载layui 2.导入layui <title>开始使用layui</title> <!-- 导入js样式 --> <link rel="st ...

  3. 第一章-Flink介绍-《Fink原理、实战与性能优化》读书笔记

    Flink介绍-<Fink原理.实战与性能优化>读书笔记 1.1 Apache Flink是什么? 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如 ...

  4. 为什么volatile能保证有序性不能保证原子性

    对于内存模型的三大特性:有序性.原子性.可见性. 大家都知道volatile能保证可见性和有序性但是不能保证原子性,但是为什么呢? 一.原子性.有序性.可见性 1.原子性: (1)原子的意思代表着-- ...

  5. Java(变量和常量)

    变量 可以变化的量.可以通过变量来操控内存中的数据:变量可以指代的是内存中的一块空间,而这块空间的位置是确定的但里边要放什么东西还不确定. Java是强类型语言,每个变量都要声明其类型. Java变量 ...

  6. CSS选择器类型总结

    CSS选择器类型总结 1.通用选择器 一般用于给所有元素做一些通用性的样式设置,比如清除内边距.外边距等.但是效率比较低,尽量不要使用. * { margin: 0; padding: 0; } 2. ...

  7. 洛谷 11 月月赛 I Div.2 A [Kubic] Addition 题解

    Content 你有一个长度为 \(n\) 的序列 \(a\).你可以执行 \(n-1\) 次操作,每次操作中你可以选择一个位置 \(i\),并删除 \(a_i\) 和 \(a_{i+1}\),再在原 ...

  8. LuoguP7369 [COCI2018-2019#4] Elder 题解

    Content 有一个魔杖最初在 \(Z\) 巫师中.经过 \(n\) 轮较量,第 \(i\) 轮中,\(Z_{i,1}\) 巫师打败了 \(Z_{i,2}\) 巫师.如果一个巫师打败了拥有魔杖的巫师 ...

  9. CF1491A K-th Largest Value 题解

    Content 你有一个长度为 \(n\),并且仅包含 \(0/1\) 的数组 \(a\).现在对这个序列做以下两种操作之一共 \(q\) 次: \(1\) \(x\):将 \(a_x\) 修改为 \ ...

  10. ConfigParser模块,主要应用于对php.ini等格式的配置文件内容读取和生成。删改较少用

    *.ini配置文件样例 创建默认的文件样例 读取文件内容 read() configparser增删改查语法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...