自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(199)
  • 收藏
  • 关注

原创 Java设计模式 — 外观模式

外观模式外观模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的外观对象进行。外观模式是一个高层次的接口,使得子系统更易于使用。医院的例子现代的软件系统都是比较复杂的。假如把医院比作一个子系统,按照部门职能,这个系统划分为挂号、门诊、划价、化验、收费、取药等。看病的人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事。解决这种不便的方法便是引入外观模式,医院可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。病人只需要接触接待员,由

2021-02-27 15:30:42 245

原创 Java设计模式 — 建造者模式

什么是建造者模式?发现很多框架的源码使用了建造者模式,看了一下觉得挺实用的,就写篇文章学习一下,顺便分享给大家。建造者模式是什么呢?用一句话概括就是建造者模式的目的是为了分离对象的属性与创建过程,是的,只要记住并理解红字的几个部分,建造者模式你就懂了。为什么需要建造者模式?建造者模式是构造方法的一种替代方案,为什么需要建造者模式,我们可以想,假设有一个对象里面有20个属性:属性1属性2…属性20对开发者来说这不是疯了,也就是说我要去使用这个对象,我得去了解每个属性的含义,然后在构造函数

2021-02-27 14:35:10 238

原创 Java — package和import关键字

1. package包其实就是目录,特别是项目比较大,java 文件特别多的情况下,我们应该分目录管理,在java 中称为分包管理,包名称通常采用小写。软件包机制:①为了解决类的命名冲突问题,在类名前加命名空间(包机制)。②在java中使用package语句定义包.(单包,复包)。③package语句只能出现在.java源文件的第一行。④package定义的格式,通常采用公司域名倒叙方式。例如:com.bjpowernode.oa.system;以上包含义:bjpowernode公司开发o

2021-02-26 22:02:42 352

原创 Java分支和if else循环

1. 分支结构1.1 if 结构1 if (/* 判断语句 true false */) {2 // 语句体3 }4 /*5 执行流程:6 当程序运行到if结构时,首先判断if之后的小括号里面的判断语句是否为true,如果为true,执行语句体,如果为false,执行大括号以外的内容7 */1.2 if - else 结构1 if (/* 判断语句 true false */) {2 // true语句体3 } else {4 // false 语

2021-02-26 21:27:20 267

原创 Java核心技术-泛型程序设计

使用泛型机制编写的代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用1 为什么要使用泛型程序设计泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。1.1 类型参数的好处在Java中增加泛型类之前,泛型程序设计是用继承实现的。ArrayList类只维护一个Object引用的数组:private class ArraryList{ private Object[] elementData; ...

2021-02-24 22:40:09 146

原创 Java并发编程:同步容器

为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。一.为什么会出现同步容器?在Java的集合容器框架中,主要有四大类别:List、Set、Queue、Map。List、Set、Queue接口分别继承了Collection接口,Map本身是一个接口。注意Collection和Map是一个顶层接口,而List、Set、Queue则继承了Collection

2021-02-23 22:10:11 156 1

原创 Tomcat组件梳理—Service组件

1.组件定义Tomcat中只有一个Server,一个Server可以用多个Service,一个Service可以有多个Connector和一个Container。Server掌握着整个Tomcat的生死大权。Service是对外提供服务的。一个Server可以有多个Service,只不过Cataina中只添加了一个,这一个就代表了Tomcat的所有服务。Connector用于接收请求并将请求封装成Request和Response来具体处理Container用于封装和管理Servlet,以及具体处理

2021-02-23 21:55:07 831

原创 《JAVA与模式》— 简单工厂模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明:就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户,而域认证则是需要到微软的域中验证用户)。那么自然的做法就是建立一个各种登录方式都适用的接口,如下图所示:pub

2021-02-23 21:38:00 122

原创 《JAVA与模式》— 抽象工厂模式

场景问题举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。同样,在选择主板的时候,也有一系列问题,比如品牌、芯片组、集成芯片、总线频率等问题,也只有这些都确定了,才能确定具体的主板。选择不同的CPU和主板,是每个客户在组装电脑的时候,向装机公司提出

2021-02-22 23:07:40 91

原创 《JAVA与模式》— 工厂方法模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的:工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明:相信很多人都做过导入导出功能,就拿导出功能来说。有这么一个需求:XX系统需要支持对数据库中的员工薪资进行导出,并且支持多种格式如:HTML、

2021-02-21 23:06:13 110

原创 《JAVA与模式》— 建造模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述建造(Builder)模式的:建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。产品的内部表象一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,它们通常又叫做产品的内部表象(internal representation)。不同的产品可以有不同的内部表象,也就是不同的零件。使用建造模

2021-02-21 22:59:06 160

原创 《JAVA与模式》— 原型模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述原型(Prototype)模式的:原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。这就是选型模式的用意。原型模式的结构原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new来创建

2021-02-21 22:47:33 267

原创 《JAVA与模式》— 合成模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述合成(Composite)模式的:合成模式属于对象的结构模式,有时又叫做“部分——整体”模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。合成模式合成模式把部分和整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待。比如,一个文件系统就是一个典型的合成模式系统。下图是常见的计算机XP文件系统的一部分。从上图可以看出,文件系统是一个树

2021-02-21 22:30:01 230

原创 《JAVA与模式》— 享元模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述享元(Flyweight)模式的:Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。Java中的String类型在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的,JAVA会确保一个字符串常量在常量池

2021-02-21 22:10:00 134

原创 《JAVA与模式》— 门面模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述门面(Facade)模式的:门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。医院的例子现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个

2021-02-21 13:10:02 175 1

原创 《JAVA与模式》— 不变模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述不变(Immutable)模式的:一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式。不变模式的结构不变模式可增强对象的强壮型(robustness)。不变模式允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销。如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个新的状态存储在新对象里。不变模式只涉及到一个类。一个类的内部状态创建后,在整个生命周期都不会发生变化时,这样的类称作不变类。这种使

2021-02-21 12:54:14 90

原创 《JAVA与模式》— 模板方法模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负

2021-02-20 23:02:59 138

原创 《JAVA与模式》— 迭代子模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述迭代子(Iterator)模式的:迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。聚集和JAVA聚集多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于聚集结构的抽象化,具有复杂化和多样性。数组就是最基本的聚集,也是其他的JAVA聚集对象的设计基础。JAVA聚集对象是实现

2021-02-20 22:08:43 112

原创 《JAVA与模式》— 责任链模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。从击鼓传花谈起击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客依次坐定位置,由一人击鼓,击鼓的地方与传花的

2021-02-20 21:45:36 98

原创 《JAVA与模式》— 命令模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述命令(Command)模式的:命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收

2021-02-19 23:04:20 79

原创 《JAVA与模式》— 状态模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。状态模式的示意性类图如下

2021-02-19 22:53:07 139

原创 《JAVA与模式》— 调停者模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述调停者(Mediator)模式的:调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。为什么需要调停者如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。这些同事对象

2021-02-19 22:44:03 227

原创 《JAVA与模式》— 解释器模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述解释器(Interpreter)模式的:解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:模式所涉及的角色如下所示:(1)抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法

2021-02-19 22:05:29 66

原创 JAVA — 访问者模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述访问者(Visitor)模式的:访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。分派的概念变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type);而变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type)。比如:List list = null;list =

2021-02-19 17:07:01 959

原创 javaweb — tomcat和web程序部署

前言这篇主要说下关于tomcat中一些属性和web程序的简单部署,可能在实际开发有更好的部署方式,但是这也是一个基础。1:tomcat关于tomcat估计只要接触java的人都听过这个名字,那我们都知道Servlet运行的话需要一个运行环境,也就是我们常说的Servlet容器,那么tomcat就是一个免费开源的Servlet容器。做过.net开发的应该知道IIS,其实tomcat和IIS一样都是具有处理HTMl页面的能力,当然也能处理Servlet和jsp。下面是一个tomcat服务器接收客户端请求

2021-02-18 23:14:12 200

原创 javaweb — 谈一谈Servlet线程安全问题

前言前面说了很多关于Servlet的一些基础知识,这一篇主要说一下关于Servlet的线程安全问题。1:多线程的Servlet模型要想弄清Servlet线程安全我们必须先要明白Servlet实例是如何创建,它的模式是什么样的。在默认的情况下Servlet容器对声明的Servlet,只创建一个Servlet实例,那么如果要是多个客户同时请求访问这个Servlet,Servlet容器就采取多线程。下面我们来看一幅图从图中可以看出当客户发送请求的时候,Servlet容器通过调度者线程从线程池中选择一个

2021-02-18 23:09:57 315

原创 javaweb — EL表达式

前言EL表示式开发用的非常多,现在我们回顾一下关于如果去操作EL表达式1:EL表达式语法所有EL表达式都是由{开始}结束,表达式中用.和[]操作符来访问数据比喻user.userName、{user[“userName”]}是等效的。2:几个重要的操作符算术,逻辑,关系操作符和我们java语法操作的一样。2.1:Empty操作符Empty操作是判断一个值是否为null或者"",写法如${!empty user}2.2:三目运算符EL表达式同时也是支持三目运算符A?结果1:结果2比如:

2021-02-18 23:04:32 182

原创 javaweb — 过滤器(附实现中文乱码问题)

1:过滤器概念过滤器就是一种在请求目标资源的中间组件,比喻把污水转换成纯净水中间需要一个污水净化设备,那么这个设备就好比一个过滤器。那么我用图来表示过滤器(可以有多个过滤器)运行的过程2:Filter(过滤器)接口Filter接口包含三个方法分别是init、doFilter、 destroy下面先逐个介绍。2.1:public void init(FilterConfig filterConfig)这个方法主要来完成初始化过滤器,容器调用这个方法的时候,向过滤器传递FilterConfig对象

2021-02-18 22:55:53 450

原创 javaweb — 监听器

前言在web应用中,有时候你想在web应用程序启动或关闭的时候执行一些任务,或者你想见他Session的创建和关闭等你就可以通过监听器来实现。那么Servlet来8个监视器接口,下面一一讲解一下。1:ServletContextListener和ServletContextAttributeListener1.1:ServletContextListener主要用于容器的启动和关闭时候进行监听。有2个方法分别用于监听容器启动和关闭。比喻我们在容器启动的时候做数据库连接的初始化。容器关闭时候可以通知从来

2021-02-18 22:45:01 360

原创 Java数据结构 — Map

常用Map:Hashtable、HashMap、LinkedHashMap、TreeMap类继承关系:HashMap1)无序;2)访问速度快;3)key不允许重复(只允许存在一个null Key);LinkedHashMap1)有序;2)HashMap子类;TreeMap1)根据key排序(默认为升序);2)因为要排序,所以key需要实现 Comparable接口,否则会报ClassCastException 异常;3)根据key的compareTo 方法判断key是否重

2021-02-07 21:32:27 366

原创 Java集合 — HashSet的原理及常用方法

一. HashSet概述HashSet是Java集合Set的一个实现类,Set是一个接口,其实现类除HashSet之外,还有TreeSet,并继承了Collection,HashSet集合很常用,同时也是程序员面试时经常会被问到的知识点,下面是结构图public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{}

2021-02-07 14:19:20 305

原创 LinkedHashMap如何保证顺序性

一. 前言先看一个例子,我们想在页面展示一周内的消费变化情况,用echarts面积图进行展示。如下:我们在后台将数据构造完成HashMap<String, Integer> map = new HashMap<>();map.put("星期一", 40);map.put("星期二", 43);map.put("星期三", 35);map.put("星期四", 55);map.put("星期五", 45);map.put("星期六", 35);map.put("星

2021-02-06 22:58:04 2900

原创 Java集合 LinkedList的原理及使用

LinkedList和ArrayList一样是集合List的实现类,虽然较之ArrayList,其使用场景并不多,但同样有用到的时候,那么接下来,我们来认识一下它。一. 定义一个LinkedListpublic static void main(String[] args) { List<String> stringList = new LinkedList<>(); List<String> tempList = new ArrayList<&

2021-02-06 22:37:32 185

原创 TreeMap原理实现及常用方法

一. TreeMap概述TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序;二.

2021-02-06 22:09:43 3291

原创 HashMap原理 — 扩容机制及存取原理

回顾一下基本概念:table变量:HashMap的底层数据结构,是Node类的实体数组,用于保存key-value对;capacity:并不是一个成员变量,但却是一个必须要知道的概念,表示容量;size变量:表示已存储的HashMap的key-value对的数量;loadFactor变量:装载因子,用于衡量满的程度;threshold变量:临界值,当超出该值时,表示table表示该扩容了;一. put方法HashMap使用哈希算法得到数组中保存的位置,然后调用put方法将key-value

2021-02-05 23:02:19 266

原创 HashMap原理 — 概念和底层架构

HashMap在Java开发中使用的非常频繁,可以说仅次于String,可以和ArrayList并驾齐驱,准备用几个章节来梳理一下HashMap。我们还是从定义一个HashMap开始。HashMap<String, Integer> mapData = new HashMap<>();我们从此处进入源码,逐步揭露HashMap/** * Constructs an empty <tt>HashMap</tt> with the default ini

2021-02-05 22:46:20 123 1

原创 JAVA设计模式 — 观察者模式(事件监听实现)

设计模式----观察者模式,其实这种设计模式,我们早就接触过,做过GUI编程的同学肯定会知道,事件的注册监听等机制,其实这个机制的实现就是利用了观察者模式。可能在程序中,我们需要在某些数据变化时,其他的类做出一些响应,我们总不能开一个线程,每隔一段时间就去检测数据有没有发生变化吧,那样效率很低,我们更希望那些具有变化属性的类能够主动将自己的变化推送给,希望检测这些变化的其他类。正如我们去医院排队,不能隔两分钟就去问大夫“轮到我了吗”,而是坐在那里等大夫的通知,大家都接收到一个名字信号,叫到谁谁就去~ 而观

2021-02-04 22:50:23 637

原创 Java SE6调用动态编译

一、使用JavaCompiler接口编译java源程序我们可以通过ToolProvider类的静态方法getSystemJavaCompiler来得到一个JavaCompiler接口的实例。JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); JavaCompiler中最核心的方法是run。通过这个方法可以编译java源程序。这个方法有3个固定参数和1个可变参数(可变参数是从Jave SE5开始提供的一个新的参数类型,用type

2021-02-03 22:21:51 81

原创 Java 如何有效地避免OOM:善于利用软引用和弱引用

前言想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。一.了解 强引用、软引用、弱引用、虚引用的概念在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱

2021-02-03 21:38:35 81

原创 深入理解Java的接口和抽象类

对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun();抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstr

2021-02-03 17:28:50 130 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除