类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。
(1) 对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。
(2) 类是对象的一个集合,对象是类的实例。
(3) 而对象的产生在Java中是使用new来实现的。
假设:做一个比方老师是对一个群体的称呼,老师这个群体就是一个类,而老师又可以具体到某一个人,比如张老师、王老师之类的等等,张老师就是一个对象。
(1) 类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,它虽然可以包含很多个体,但它本身不存在于现实世界上。
(2) 对象是类的一个具体。它是一个实实在在存在的东西。
(3) 类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。
(4) 对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。
(1) 提高了安全性
(2) 提高了复用性
(3) 隐藏了实现细节
总结为八个字:隐藏属性,暴露方法
Java中4种“访问控制符”分别为:private、default、protected、public,他们说明了面相对象的封装性。
继承的概念:继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法), 如果父类中的方法为private类型的,那么子类则无法继承,也无法覆盖。
2.子类和父类的方法必须是实例方法,如果父类是static方法而子类是实例方法,或者相反都会报错。 如果父类和子类都是static方法,那么子类隐藏父类的方法,而不是重写父类方法。
3.子类和父类的方法必须要具有相同的函数名称、参数列表,并且子类的返回值与父类相同或者是父类返回类型的子类型(jdk1.5之后)。 如果方法名称相同而参数列表不同(返回类型可以相同也可以不同),那么只是方法的重载,而非重写。 如果方法名称和参数列表相同,返回值类型不同,子类返回值类型也不是父类返回值类型的子类,编译器就会报错。
4.子类方法的访问权限不能小于父类方法的访问权限(可以具有相同的访问权限或者子类的访问权限大于父类)。 访问权限由高到低:public、protected、包访问权限、private。如果子类方法的访问权限低于父类,则编译器会给出错误信息
5.子类方法不能比父类方法抛出更多的编译时异常(不是运行时异常),即子类方法抛出的编译时异常或者和父类相同或者是父类异常的子类。
多态是同一个行为具有多个不同表现形式或形态的能力。
继承 重写 父类引用指向子类对象
1.消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.
重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。
(1):方法名必须相同
(2):方法的参数列表一定不一样。
(3):访问修饰符和返回值类型可以相同也可以不同。
其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。
重写发生在父类子类之间,比如所有类都是继承与Object类的,Object类中本身就有equals,hashcode,toString方法等.在任意子类中定义了重名和同样的参数列表就构成方法重写.
重写(override):一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同。
重写的特征:
(1):方法名必须相同,返回值类型必须相同
(2):参数列表必须相同
(5):构造方法不能被重写,
简单而言:就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。
属性:对象数据的描述
方法:对象的行为
构造方法:用于实例化对象
块:分静态块与实例块
类的作用:类就是一个模板,定义多个对象共同的属性和方法 如:学生类(张三,李四) 手机类(华为.oppo)
1.加载父类(以下序号相同,表明初始化是按代码从上到下的顺序来的)
(1) 为父类的静态属性分配空间并赋于初值
(2) 执行父类静态初始化块;
2.加载子类
(1) 为子类的静态属性分配空间并赋于初值
(2) 执行子类的静态的内容;
2.加载父类构造器
(1) 初始化父类的非静态属性并赋于初值
(2) 执行父类的非静态代码块;
(3) 执行父类的构造方法;
4.加载子类构造器
(1) 初始化子类的非静态属性并赋于初值
(2) 执行子类的非静态代码块;
(3) 执行子类的构造方法.
总之一句话,静态代码块内容先执行(父先后子),接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
(1) Java中继承是单继承,只有一个父类,可以有多个子类。
(2) 子类在继承父类的属性和方法的时候可以扩展自己的属性和方法。
(3) 继承父类的时候,父类必须有一个无参构造。
(4) 子类构造的时候会默认通过super()来调用父类的构造方法。初始化子类的时候,先调用父类的默认构造,再调用子类的构造。
(5) 调用父类的属性或方法可以通过super关键字。
(6) 在调用子类的方法时会先在子类中寻找那个方法,找到后调用成功,否则再去父类中找想要调用的方法。如果在子类中找到了那个方法,则子类重写了父类的方法。
(7) 用final修饰的类不能被继承。
(1) 私有的属性(可以通过set get或super方法使用父类的私有属性)
(2) 不同包的friendly
(3) 构造方法不能继承
(4) 类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的
(5) 类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系
单例模式(Singleton),也叫单子模式,是一种常用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候,整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息,显然,这种方式简化了在复杂环境下的配置管理。
综上所述,单例模式就是为确保一个类只有一个实例,并为整个系统提供一个全局访问点的一种方法。
私有的构造方法;
指向自己实例的私有静态引用;
以自己实例为返回值的静态的公有方法。
在单线程环境下,单例模式根据实例化对象时机的不同,有两种经典的实现:一种是 饿汉式单例(立即加载),一种是 懒汉式单例(延迟加载)。饿汉式单例在单例类被加载时候,就实例化一个对象并交给自己的引用;而懒汉式单例只有在真正使用的时候才会实例化一个对象并交给自己的引用。
用abstract修饰的类叫做抽象类。
在讲抽象类之前有必要强调一下abstract修饰符:
(1) abstract修饰的类为抽象类,此类不能有对象,(无法对此类进行实例化,说白了就是不能new);
(2) abstract修饰的方法为抽象方法,此方法不能有方法体(就是什么内容不能有);
关于抽象类的使用特点:
(1) 抽象类不能有对象,(不能用new此关键字来创建抽象类的对象);
(2) 有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法;
抽象类生来就注定它是要被继承的,如果没有任何一个类去继承它的话,那么也就失去了它的意义;抽象方法生来就是要被重写的,而且是必须重写。(只要继承了某个抽象类,就必须去重写此抽象类中含有的抽象方法)
以上代码是定义了一个叫做animal的抽象类,其中含有eat()和sleep()两个抽象方法。 这里指的注意的是:抽象方法不能有方法体,在方法后面加一个大括号而里面什么都不写也是不行的,编译器会报“abstract methods do not specify a body”这样一个错误。
其中重要的几个知识点:
1.接口中的所有属性默认为:public static final ****;
2.接口中的所有方法默认为:public abstract ****;
3.接口不再像类一样用关键字 extends去“继承”,而是用 implements 去“实现”,也就是说类和接口的关系叫做实现,(例如:A类实现了B接口,那么成为A为B接口的实现类。而类与类之间的继承的话,叫做A类继承了B类,其中B类即为A类的父类)。实现接口与类的继承比较相似。
以上代码定义了三个接口分别是:Study,Eat,Sleep,以及两个类分别是Cat和Person。其中Cat类实现了两个接口分别是:Eat和Sleep,而Person实现了三个接口分别是:Study,Eat,Sleep。这是为什么呢?就是因为Cat并不需要学习,而Person需要学习,所以在Cat类中没有实现Study这个接口,而在Person中却是有的。那么显而易见,接口所阐述的是“有没有”的问题,而刚刚所说的抽象类阐述的是“是不是”的问题。
(1) 抽象类要被子类继承,接口要被类实现。
(3) 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
(4) 接口是设计的结果,抽象类是重构的结果。
(5) 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。
(6) 抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。
(7) 抽象类主要用来抽象类别,接口主要用来抽象功能。
使用jsonNode去判断实体类的参数是否为空
实体识别与关系抽取是自然语言处理(NLP)中的两个重要任务,通常被视为知识图谱构建的基础技术。实体识别(Named Entity Recognition, NER):实体识别的目标是从文本中识别出具有特定意义的实体,并将其分类到预定义的类别中。这些实体通常包括人名、地名、机构名、时间表达式、货币值等。实体识别的过程可以分为两个主要步骤:实体边界识别和实体类别识别。在实际应用中,实体识别技术广泛应用
问题1:Java中的类加载过程是怎样的?✅ Java的类加载机制是Java虚拟机(JVM)的重要组成部分,它负责将类的字节码文件(.class)加载到内存中,并转换为JVM可以使用的Java类。下面将详细介绍Java的类加载机制,并通过代码示例说明。 1). 加载(Loading)查找并加载类的二进制数据(.class文件),在堆中创建对应的Class对象。2). 验证(Ve
```mermaidflowchart TD A(开始) B[创建实体类] C[编写业务逻辑] D[使用实体类中的值] E(结束) A --> B B --> C C --> D D --> E```在Java开发中,使用实体类中的值是非常常见的操作。首先,我们需要创建一个实体类,然后在业务逻辑中使用这个实体
# Java中的实体类作为一位经验丰富的开发者,你将要教会一位刚入行的小白如何实现"Java中的实体类"。实体类是Java中用来表示现实世界实体的一种类。本文将以流程图的形式展示实体类的创建过程,并提供每一步所需要的代码,并注释这些代码的意义。## 实体类的创建流程下面是实体类的创建流程图:```mermaidgraph TD; A[定义实体类] --> B[定义类名和属
1. 关于实体类实体类是POJO的其中一种。POJO:Plain Ordinary Java Object,简单的Java对象。在项目中,如果某个类的作用就是声明若干个属性,并且添加Setter & Getter方法等,并不编写其它的功能性代码,这样的类都称之POJO,用于表示项目中需要处理的数据。以pms_album为例,这张数据表应该有与之对应的实体类,在数据表中的
由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念:概念 VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少
Atitit 实体的概念与理解 目录1. 使用不同的语言来描述实体 11.1. H5 table dom模型 json 11.2. Sql table 11.3. Java class map 12. 实体(哲学概念) 13. 实体it概念 23.1. 实体(数据库概念) 23.2. E-R称为实体-联系图 23.3. 实体 (计算机名词) 23.4. 实体(网络用
1、概念模型 当我们要完成一个软件系统时,需要把系统中的实体抽取出来,形成概念模型。概念模型在Java中称为实体类,实体类--是与数据库中的表对应的,一种orm(对象与关系的映射);实体类在Java中的体现形式就是javaBean(所以说javabean是实体类的一种)。 类使用成员变量来完成关系,一般都是双向关联!例如部门、员工都是系统中的实体。概念模型中的实体最终会成为Java中的类、数据
这是我的第一个第一篇博客 成功的加入it、行业,成为这个行业的大佬 java中实体类的学习 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通 JavaBean,即我们前面封装数据使用的,实体类。实体类就是模型的定义。Domain存放实体类,domain:这一层是用来管理javaBean实体对象的, 实体类==javaBean。pojo: 简单java
实体类是在JAVA软件开发中广泛使用的概念。 但是网上少有讲清楚到底是什么的。本期我来讲一讲什么是实体类。 我从直观、作用、定义三方面来讲。首先,直观的看: 实体类就是一个拥有Set和Get方法的类。实体类通常总是和数据库之类的(所谓持久层数据)联系在一起。这种联系是借由框架(如Hibernate)来建立的。其次说定义
String类 String类位于lang包下java会默认导入lang包下的类,所以可以直接使用,注意String是final类所以不能有子类 构造String对象:常量对象:String常量也是对象:“hello”,“34354”等等;/**java把用户程序中的String常量放入常量池,因为String常量是对象,使用也有自己的引用和实体*可以这样理解:常量池中的数据在运
pojo(简单Java对象)传统意义的 java 对象,能够做到维护数据库表记录的实体类就是一个完全符合 java bean 规范的纯 java 对象,没有增加别的属性和方法。一般就是只有属性字段和 setter 和 getter 方法。dto(数据传输对象)主要是指展示层与服务层之间之间的数据传输对象。vo(值对象)通常用于业务层之间的数据传递,仅仅包含数据,一般是抽象出来的业务对象。do(领域
客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间。如果在某一时间段内访问站点的用户很多,web服务器内存中就会积累大量的HttpSession对象,消耗大量的服务器内存,即使用户已经离开或者关闭了浏览器,web服务器仍要保留与之对应的HttpSession对象,在他们超时之前,一直占用w
其实不想再啰嗦这个问题,但是要回答的东西很多,所以还是另起贴回复了。之前从很多方面来解释了分层,但是对于实体类这个家伙由于是一个一根棒子捅到底的异类,所以引起金同学的疑问,由于涉及到我的另一篇post,所以不得不作出几点说明。其一,实体类是什么?这里我做出一个符合大多数系统的定义:实体类就是只有属性且属性与数据库表的列定义一一对应,用途为在各个层次间传递数据的载体。也即是DTO(Data tran
21/7/22 读书笔记目录21/7/22 读书笔记数据库系统概论 概念模型数据库系统概论 数据模型数据库系统概论 三级模式与二级映像数据库系统概论 概念模型概念模型是将现实世界反映到机器世界的第一层抽象,其描述了解决问题所需的数据模型所应有的结构。概念模型一方面需要能够有语义表达能力,直观表达出应用程序中所需的语义概念,另一方面需要通俗简单,方便人理解。概念模型中的基本概念包括:实体:我们称客观
实体类是在JAVA软件开发中广泛使用的概念。 但是网上少有讲清楚到底是什么的。本期我来讲一讲什么是实体类。首先,直观的看:实体类就是一个拥有Set和Get方法的类。实体类通常总是和数据库之类的(所谓持久层数据)联系在一起。这种联系是借由框架(如Hibernate)来建立的。其次说定义(比较生涩难懂):实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责
在公司里反反复写代码,突然翻到以前的书本,看着书本上的”面向对象”四个字;想起我在达内时,王克晶对这四个字的解释“以后会懂的”;我突然间懂了面向对象,2018年9月1号,不过我得借几个例子才能讲明白;希望能让学java的同道中人少走些弯路;1)第一个例子:关于面向对象与面向过程的差别-更轻视逻辑 我提过我一直在做的大数据可视化图表工作:就是一些柱状图一类的模型; 但刚开始探索期我遇到一个问题,
记录了 “全局值”setAllValue和 “全局更新时间”setAllTime(同样用cnt作为时间戳,然后cnt自增)。每次存值时,不仅存具体的value,还会记录当前的cnt(时间戳),然后cnt自增。通过比较每个元素的更新时间和全局更新时间,动态判断应该返回哪个值。不直接修改所有数据,而是记录一个全局更新时间戳。
在项目管理中,。缓冲时间是应对不确定性的重要工具,它并非浪费,而是风险管理的一部分。如果项目计划没有合理的缓冲设计,任何小的变动都会被放大,最终导致项目失控。正如拿破仑所说:“最坚固的防线是时间。”在项目执行中,时间的冗余设计往往是保证目标达成的最后屏障。
本文围绕力扣 “外观数列” 题展开,先明确题目核心是 “后项对前项进行行程长度编码”,如 countAndSay (4) 由 countAndSay (3)“21” 描述为 “1211”。解析指出该题是面试高频题,可考察基础能力、思维灵活性,还能帮规避编程错误、实现举一反三。算法上,先以双指针法实现单字符串描述,再通过递归(自顶向下,思路直白但有栈开销)或迭代(自底向上,无栈开销更高效)从 1 推导到 n。最后给出两种实现代码,对比其优缺点与复杂度,总结解题核心,并预告下一题 “数青蛙”。
技术驱动流量变革,选对服务商是制胜关键 在生成式AI重塑信息分发格局的今天,传统搜索引擎流量正以每年15%的速度向生成式引擎迁移。据行业数据显示,2025年全球GEO(生成式引擎优化)市场规模已突破120亿美元,35%的企业数字流量来自AI搜索平台。 北京作为中国AI技术与数字营销高地,汇聚了众多技 ...
基于SpringBoot3+Vue3前后端分离的电子相册管理系统,本人原创开发。主要功能:基于SpringBoot3+Vue3前后端分离的电子相册管理系统,系统包含管理员、用户角色,功能如下: 管理员:用户管理;相册管理;照片管理;留言管理;公告信息;个人信息;密码修改; 用户:相册管理;照片管理;留言管理;公告查看;个人信息修改;密码修改。 系统界面美观大方,使用了SpringBoot3、Myb