自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【自动化测试】- 元素定位

对元素的定位是自动化测试的一个核心,能够准确地找到我们所需要的元素在什么位置。每个对象都会有很多属性,可以通过这些属性来找到所需要的对象。但是需要注意,无论用什么属性,都需要保证该页面上属性的唯一性。常见的定位属性有:id、name、class name、link text、partial link text、tag name、xpath、css selector以百度的输入框为例:输入框有这些属性,想要定位到百度的输入框,就可以使用这些属性来定位。# coding = utf-8from s

2022-03-05 10:52:29 537 1

原创 【项目】- 在线音乐服务器

3、创建MusicDao类对music表进行操作,根据API的设计,该类需要实现音乐上传、删除某个音乐、删除选中的音乐、查询音乐、添加喜欢音乐、查询喜欢音乐、移除喜欢音乐。(1)查询全部歌单:需要给用户返回的是整个歌单的列表。...

2022-03-02 22:05:55 605

原创 选择习题集4

一、1、在具有 2n 个结点的完全二叉树中,叶子结点个数为AA:nB:n+1C:n-1D:n/2完全二叉树是指除最后一层外,每一层上的节点数都达到最大值,在最后一层中只缺少右边的若干节点。如果共有2n个节点,从根节点开始按层序用自然数1,2,3,…,2n进行编号,则编号为n的节点左子节点编号为2n,因此叶子节点的编号为n+1,n+2,…,2n,所以叶子节点的个数为n2、有权值分别为11,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为BA:24B:71C:48D:53

2022-02-28 10:22:08 964

原创 测试用例的设计方法及例子

测试用例的概念测试用例是为了实施测试而向被测试的系统提供的一组集合。测试用例集合包括:测试环境、操作步骤、测试数据、预期结果等要素。文章目录等价类边界值因果图正交设计法场景设计法错误猜测法测试用例的总体设计是基于需求的设计测试用例。重点需要关注两个问题:(1)需求时都正确、完整、无二义,并且逻辑一致。(2)需要从“黑盒”角度出发,设计出测试集,保证能够完全符合需求。下面是一些设计测试用例的具体方法等价类小明需要去超市买苹果等价类:苹果、桃子、梨…苹果可以满足小明的需求就代表无论是青苹果、红

2022-02-26 21:34:00 3812

原创 开发模型+测试模型简介

文章目录开发模型瀑布模型螺旋模型增量、迭代模型敏捷开发测试模型v模型w模型开发模型整个软件开发的生命周期:需求-计划-设计-编码-测试-运行维护。瀑布模型瀑布模型是其他模型的基础框架,是线性顺序执行的软件开发模型。优点:强调开发的阶段性;强调早期计划及需求调查;强调产品测试。缺点:太过依赖早期进行的需求调查,不能适应需求的变化;由于是单一的流程,风险经常会在后期的测试阶段才能显现出来,失去了及时纠正的机会。螺旋模型一般在软件开发初期需求不是很明确时,采用渐进式的开发模型,螺旋开发就是渐进

2022-02-19 21:08:38 355

原创 选择习题集3

一、1、如果希望监听TCP端口9000,服务器端应该怎样创建socket? BA:new Socket(“localhost”,9000);B:new ServerSocket(9000);C:new Socket(9000);D:new ServerSocket(“localhost”,9000);ServerSocket(int port):服务器绑定端口号,调accept()监听等待客户端连接,它返回一个连接队列中的一个socket。Socket(InetAddress address

2022-02-19 10:00:04 719

原创 idea创建用maven管理的webapp项目流程

1、使用项目模板2、如果需要上传到中央仓库就需要填写,否则就用默认值就可以。填写之后就可以唯一确定一个jar包。点击finish九就完成了项目配置。第一次创建会从中央仓库下载大量的依赖jar包,会耗时比较久...

2022-01-20 21:15:32 560

原创 编程习题集2

文章目录1、个位数统计2、构建乘积数组1、个位数统计给定一个k位整数N = dk-110k-1 + … + d1101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入描述:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出描述:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。

2022-01-13 15:38:24 277

原创 选择习题集2

一、1、以下描述正确的是 BA:CallableStatement是PreparedStatement的父接口B:PreparedStatement是CallableStatement的父接口C:CallableStatement是Statement的父接口D:PreparedStatement是Statement的父接口CallableStatement继承自PreparedStatementPreparedStatement继承自statement2、下列程序的运行结果Bpubli

2022-01-13 11:07:52 1561

原创 在线音乐播放服务器(一)

基本功能点1、登录、注册2、上传音乐3、删除某个音乐、删除选中的音乐4、查询音乐(包含“模糊查询”)5、添加音乐到喜欢的列表6、查询喜欢的音乐(包含“模糊查询”)整体框架后端采用分层结构,实现代码的高内聚低耦合,前端页面使用HTTP+CSS+JS,servlet层实现前后端的交互,service层表示服务层,dao层用于操作数据库。数据库设计根据功能点分析实体,主要有两个实体:music和user。设计表:music表、user表、喜欢音乐表--数据库drop database i

2022-01-12 17:16:32 1027

原创 JVM 垃圾回收机制

本片主要是介绍垃圾回收机制常用的标记算法和回收算法。文章目录垃圾标记引用计数法可达性分析回收方法区垃圾回收标记-清除标记-复制标记-整理分代回收算法垃圾回收器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器在JVM中的内存区域,栈中所存储的内容释放的时机都是确定的,程序计数器中存储的是地址,也不需要进行回收。垃圾回收机制就主要回收堆以及方法去中一些数据。JVM有了垃圾回收机制以后可以不用程序员手动释

2022-01-08 20:22:43 525

原创 JVM的内存

这篇文章主要分析JVM的内存区域进行简单学习,包括程序计数器、JAVA虚拟机栈、本地方法栈、JAVA堆、方法区和运行时常量池。JDK、JRE、JVM的区别:JDK:JAVA开发者工具JRE:JAVA运行环境JVM:JAVA虚拟机JDK包含JRE,JRE包含JVM1、程序计数器(线程私有)程序计数器是一块比较小的内存空间。如果说当前线程执行的是java方法,程序计数器就记录的是正在执行的虚拟机字节码指令的地址。如果正在执行的是一个native方法,程序计数器的值就是空。2、JAVA虚拟机栈(

2022-01-05 21:33:27 387

原创 Linux的基本命令

1、ls指令ls:查看当前目录下的文件和目录名称ls -l或ll:以列表的形式显示当前目录下的文件和目录名称2、pwd指令pwd:显示当前所在的目录3、cd指令cd:目录切换cd /:切换到根目录cd ~:切换到home目录cd …:切换到当前目录的上级目录4、touch指令touch:创建一个新文件如果touch创建了一个已经存在的目录,那么就会修改文件的时间,不会修改内容5、cat指令cat:读取文件内容,并打印在控制台6、echo指令echo:可以通过重定向操作写文件

2022-01-04 21:22:41 1005

原创 选择习题集

一、1、下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:Bbyte[] src,dst;A:dst=String.frombytes(src,”GBK”).getbytes(“UTF-8”)B:dst=new String (src,”GBK”).getbytes(“UTF-8”)C:dst=new String (”GBK”, src,) getbytes()D:dst=String.encode(String.decode(src,”GBK”)), “UTF-8”)

2022-01-04 20:34:38 737

原创 编程习题集1

1、计算糖果A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入:输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。输出:输出为一行,

2022-01-04 20:34:25 263

原创 应用层(HTTP协议)

这篇主要是认识Http协议,session和cookie文章目录Http协议格式cookiesessionHttp协议格式1、Http请求(按行来读取):第一行:方法(method):POST url 版本号:HTTP/1.1使用空格来划分第二行-空行之前:请求报头(header),是由若干个键值对组成的,键和值之间使用“: ”来分割。空行:请求报头结束的标志空行之后:正文(body),正文可以为空,如果是空就是GET请求,如果非空是POST请求。也是由键值对组成,多个键值对

2022-01-01 22:43:08 1081

原创 网络层和数据链路层

传输层就会涉及到TCP协议。这篇主要是了解网络层(IP协议)和数据链路层(以太网)的基本知识。网络层网络层是需要去解决两个问题的,一个是地址的管理,网络中的这些主机和节点都是需要使用IP地址来区分的。另一个就是路由的选择,从一台主机到另一台主机中间路径该怎么走。1、地址管理需要给每台主机都分配一个唯一的身份标识,也就是IP地址。IP地址是一个32位的整数,而目前全世界所拥有的计算机数已经远远超过了2^32台,所以IP地址就会出现紧缺的问题。解决这个问题就有了以下的方法(1)动态分配IP地址:只

2021-12-29 21:38:23 2249

原创 TCP的重要特性(下)

文章目录拥塞控制延迟应答捎带应答拥塞控制和流量控制一起来决定窗口的大小由于不好衡量玩过传输路径上的拥堵情况,TCP引入了慢启动机制,先发少量的数据探路,查看当前的拥堵状态,再去慢慢快速的传输数据。(1)当TCP开始启动时,慢开始的阈值等于窗口的最大值。(2)每次超时发送的时候,慢开始的阈值就会变成原来的一半。延迟应答目的是为了提高传输的效率,在流量控制的基础上,尽量返回一个合理的、较大的窗口。在不影响可靠性情况下,尽量让ACK的发送时间晚一点,就可以给应用程序提供更多的消费数据的机会,时间

2021-12-27 17:53:50 1382 1

原创 TCP的重要特性(上)

文章目录确认应答超时重传确认应答这个特性是可靠传输的最核心的机制。当发送方发送一条消息给接收方,接收方就会反馈一个确认报文(ACK)。在网络上是存在“后发先至”的情况,如果发送放发送好几条消息,可能就会导致发送的消息出现错乱,TCP会针对发送的请求进行编号,应答是也会针对编号进行应当,就会避免出现这样的情况。超时重传数据在传输的过程中,可能会出现丢包的问题,导致发送发收不到ACK,就会有两种情况,一种是发送的数据丢了,一种是ACK丢了。就会触发重新传输,直到发送方收到ACK。当发送方发送一

2021-12-25 21:09:28 1093

原创 OSI七层模型 和 TCP/IP五层模型

OSI七层模型分层名称功能应用层针对每个应用的协议表示层设备固有数据格式和网络标准数据格式的转换会话层通信管理,负责建立和断开通信连接。管理传输层一下的分层传输层管理两个节点之间的数据传输,负责可靠传输网络层地址的管理和路由的选择数据链路层相邻设备之间传送和试别数据帧物理层光/电信号的传递TCP/IP五层模型TCP/IP协议采用的是5层的结构模型,上层协议调用下层协议,下层协议为上层协议提供服务分层名称功能.

2021-12-21 18:09:29 1034

原创 IO流-基础

一、概念流:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称和抽象。流的本质就是数据传输,根据数据传输特性将流抽象成各种类,更方便的对数据进行操作。二、输入输出流输入:将数据从输入设备种读取到内存中。输出:将数据写入到各种输出设备上。文件是即可以作为输入设备,也可以作为输出设备的。三、字节流、字符流File类只可以对文件进行常规操作,不可以进行读写操作,要想处理文件的内容,就需要通过流来完成。字节流:用来处理二进制的文件,读写数据时以字节为单位。字符流:用来处理文本文件,读写

2021-12-20 21:35:53 259

原创 MySQL-“事务”的基本特性

文章目录概念事务解决的问题事务的基本特性原子性一致性持久性隔离性隔离级别这篇主要是对事务的四个基本特性中的“隔离性”做具体的总结。概念事务就是把一组操作打包到一起,执行的时候能够保证这一组操作之间是有一定的特性的,避免出现一些安全问题。因此这组操作就是要不就全部成功执行,要不就是全部失败。事务解决的问题在某些数据表中,根据业务的需要,要求一些操作是必须要绑定在一起,要不就全部成功,要不就全部失败。比如我们在银行操作转账时,你的账户余额减小和对方的账户余额增加是必须是绑定在一起的。如果中间出现异常就

2021-12-12 20:19:39 824

原创 多线程案例

文章目录单例模式饿汉模式懒汉模式阻塞队列定时器单例模式这是一种常见的“设计模式”,当在某些情况下,不需要多个实例,就可以使用单例模式来解决,如果想要尝试创建多个实例,代码就会报错。可以有两种方式:饿汉模式:当类加载的时候就会立刻实例化。懒汉模式:类加载时不会实例化,当第一次调用这个类的时候才会去实例化。(可以仔细拼一下为啥叫这两个名字,一个急得想马上创建,一个等啊等啊不到万不得已需要使用了才实例化)饿汉模式类加载的时候就会立刻实例化static class Singleton{

2021-12-11 21:25:19 377

原创 “线程”-知识梳理

文章目录线程概念进程与线程线程和进程的区别线程创建的几种方法Thread类的常见方法启动一个线程-start()中断一个线程线程概念进程与线程1、进程:我们在学校每个班级都会有好多班干部,大家都是各司其职的,负责班级学生事情的由班长负责,团方面由团支书负责,等等。如果班主任给班长分配任务,让他去检查每门课程每天的作业完成情况。这样的一个过程就相当于一个进程。进程是系统调度的一个最小单位。当一个程序要运行就会创建一个进程。2、线程接着上面的来说,班主任给班长分配的这个任务,涉及到了各个学科,那班

2021-12-02 16:57:42 160

原创 “进程”和“线程”的简单区别

重点:“进程”和“线程”的两者区别内容:简单的理解一下“线程” 和“进程”两个概念,最后总结一下两者的区别。先来对这两者的区别进行一个比喻:我们把进程比喻为一个工厂的话,那其实线程就是这个工厂中的无数条生产线。每一条生产线生产的产品都是不一样的,但是这些产品有些原材料确实相同的。最后所有的生产线生产出的东西最后组成了这个工厂所生产的东西。进程1、进程是操作系统分配资源的最小单位。是程序的一个执行实例。2、点击一个.exe文件之后,操作系统就会加载这哥可执行文件,并为其分配资源到最后的销毁资源。这就

2021-11-18 17:26:46 805

原创 MySQL--“索引”的理解

重点:索引的数据结构本章的重点主要是去帮助自己去理清楚索引实际的数据结构,理清楚如何去存储数据的。

2021-11-17 20:27:02 929

原创 MySQL数据库-基础增删改查

一、数据库介绍1、什么是数据库数据库是一种软件,用于更有效的、更安全的、便于对数据进行查询以及在程序中便于控制的管理数据。数据库可以远程连接来使用数据库。2、数据库分类大致分为关系型数据库和非关系型数据库。关系型数据库是通过二维表格的模型来组织数据的数据库。是基于标准SQL。常用的关系型数据库:Oracle、MySQL、SQL Server等。非关系型数据库:不规定基于SQL实现。常见的非关系型数据库:mongodb、redis等。二、数据库基础操作1、数据库操作查看数据库:show da

2021-11-13 21:04:05 545

原创 快速排序(递归+非递归)-java

一、原理1、从待排序区间中选择一个值作为基准值。(通常选择最左侧元素或者最右侧元素)。2、遍历整个待排序的区间,把比基准值小的元素放在基准值左侧,比基准值大的元素放在右侧。最后整个区间就会划分为三个部分:小于基准值的元素、基准值、大于基准值的元素。3、再针对左侧整理好的区间和右侧整理好的区间继续进行下一步的操作,重复以上过程即可。(肯定看了这个文字的解释还是一脸懵,那就用一个例子来看一下整个的排序过程)二、图解:需要排序的区间:{6,1,2,7,9,3,4,5,10,8}基准值:右侧元素-8

2021-11-07 22:02:07 1394

原创 数据结构-堆(向下调整、建堆、优先队列)

一、认识堆我们先来堆是一种什么样的数据结构。堆在逻辑上是一个完全二叉树,但物理上是保存在数组中的。并且堆还需要满足任意节点的值大于或小于其子树中节点的值。如果根节点的值小于子树的值,我们称为小堆。如果根节点的值大于子树的值,称为大堆。堆的基本作用就是帮我们快速找到集合中的最值。二、向下调整我们在建堆的时候,是需要取借助向下调整的。1、过程(以小堆为例):(1)设定根节点为当前需要调整的节点-parent。(2)找到当前节点的左右子树的值(通过下标来查找)。(3)比较左右子树的值。将较小的节

2021-11-04 20:33:13 497

原创 二叉树遍历方式-先序、中序、后序和层序遍历(JAVA)

一、树型结构在认识二叉树之前,我们可以先了解一下什么叫树。数据结构中的树,和我们生活中的树是有类似之处的。其实是一种非线性的数据结构。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。如图,就是一个普通的树形结构,这里我们一定要区分开树和图的区别。二、二叉树1、概念:二叉树也是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:

2021-11-03 13:10:24 3727 2

原创 初始java-“泛型”

在学习集合之前,我们还是需要去学习一些预备的知识,“泛型”和“包装类”。这篇文章先把“泛型”进行总结一下。1、引入:问题的提出:在学习java的时候我们都有认识到顺序表,很多人都是以int类型的元素进行基础学习的,其实对于其他的基本数据类型也是同理,那如果我们想要存储的是一些自定义类型的,我们应该怎么解决?问题的解决:我们都知道在学习多态时,父类的引用可以指向子类的对象。而Object是java所有类的父类,那我们是不是就可以把所有的顺序表类型都写成Object类型?public class S

2021-10-29 20:33:40 99

原创 认识“Java异常”

从字面我们来理解异常,其实也就是异于常态。而在java中,我们可以这样来定义”异常“。程序在运行时 出现错误时通知调用者的一种机制。一、捕获异常如果我们在编写程序的时候发现,这个地方可能会出现某种异常,并结合我们的目的,我们只想让这里的异常抛出,并且程序继续向下执行,就需要去将这个异常处理掉,此时就需要我们程序员去捕获异常。try{有可能出现异常的语句 ;}catch (异常类型 异常对象) {捕获try中可能出现的异常} finally {异常的出口}我们先来看一下使用了try…cat

2021-10-24 19:14:49 116

原创 “抽象类” 和 “接口” 的区别!!!

抽象类:在父类中没有具体实际工作的方法,我们可以将他设置为抽象方法,包含了抽象方法的类我们称为抽象类(abstract class)。比如,有一个类中是这样写的:class A{ public void a() { // 啥都不用干 }} 很明显可以看出,这个类A是什么都没有实现的,我们就可以把这个类定义为抽象类,直接用abstract修饰就好。接口:接口在java中是一个抽象类型,是抽象方法的集合。接口是抽象类的更进一步(换句话说,比抽象类还抽象),抽象类中还可以包含非抽象方法或者字

2021-10-22 22:05:16 225

原创 自己编写-“单链表”

在数据结构中,我们所接触到的单链表,其实就是存入数据,并将每一个数据链接起来,所形成的一种存储结构。我们在实际中接触的链表其实有很多种,这里我们以无头单向非循环链表来理解。先来了解一下单链表的结构吧。单链表有很多节点构成,每个节点中存入的是该节点的值(data)以及下一个节点的地址(next),这样就将很多个节点连接起来了。看图片来理解吧!data是想要存入的数据,next存入的是下一个节点的地址,在每个节点上面写的(100、200、300、400、500)是假设出的节点的地址。1、构建节点想要

2021-10-18 20:26:01 271

原创 “递归”算法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-09-30 20:50:55 232

原创 TCP连接管理

一、建立连接(三次握手的过程)首先先了解一下为啥要建立连接呢?1、更好的保证可靠性(TCP协议是有连接、可靠传输、面向字节流的):建立连接的过程其实就是在让通信双方验证各自的发送能力和接受能力是否正常。2、协商一些重要参数。咱们以打电话为例先了解一下建立连接的过程。此时通信双方就都建立了连接。TCP真正的建立连接过程。1、ACK:应答报文,本质上就是ACK字段为1的报文,此时,报头中的“确认序号”字段才会生效。SYN:同步报文段,尝试和对方建立连接。JAVA Socket API中,客户

2020-10-27 15:58:13 360

原创 java内存

Java中的内存分为两种,一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个内存分配内存空间,当超过变量的作用域后,java会自动释放掉为该内存分配的内存空间,该内存空间立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的

2020-10-19 16:52:02 126

原创 网络传输的基本流程

网络传输的基本流程:各个层次的协议之间是如何协同工作的。其中包含两个基本核心操作:1、封装2、分用现在我要发一个qq消息给被人,消息内容为在吗?我的主机:封装的过程1、应用层(QQ)需要根据用户输入的数据,把这个数据构造成一个应用层数据报。这个构造数据报的过程,就可以想象成为是一个字符串拼接(序列化)的过程。2、应用层协议把数据要交给传输层,来进一步封装。封装的意思就是给刚才的数据基础上加上一个传输层的协议报头。这里的“谁”指的是某个进程,使用端口号来表示。3、传输层需要把数据进一步交给网

2020-09-01 16:11:38 2527

原创 TCP/IP五层(四层)模型

TCP/IP五层(四层)模型中包含的协议有很多,其中典型代表是TCP协议和IP协议。应用层:应用程序直接打交道的协议。在实际开发中涉及最多的部分,甚至需要自己设计应用层协议。传输层:负责端到端之间的传输。(只关注起点和终点)网络层:负责点到点之间的传输(需要规划路径)数据链路层:负责相邻点之间具体如何传输。物理层:网络通信的基础硬件设施。物理层由于是纯硬件设施,所以有时候会忽略物理层,成为“四层模型”。这五层协议,上层协议调用下层协议,下层协议给上层协议提供服务。OSI参考模型和TCP/IP

2020-09-01 15:37:50 1175

原创 多态

在理解多态之前,需要先理解向上转型、动态绑定、方法的重写。向上转型:为了下面方便解释代码先创建几个类。class Animal { protected String name; public Animal (String name){ this.name = name; } public void eat() { System.out.println(this.name + "Animal::eat()"); }

2020-08-24 22:11:31 89

空空如也

空空如也

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

TA关注的人

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