01java基础 - 02

合集下载

java基础ppt课件

java基础ppt课件

03
封装
将对象的属性和方法封装 在类中,隐藏内部实现细 节,仅通过对外提供的接 口进行访问和操作。
继承
子类可以继承父类的属性 和方法,实现代码复用和 扩展。
多态
子类可以重写父类的方法 ,实现同一方法在不同对 象上的不同表现。
接口与抽象类
接口的定义
接口是一种引用类型,用于定义一组 方法的规范,但不包含方法的实现。
抛出自定义异常
在方法中,可以使用throw语句抛出自定义异常。抛出异常时,需要创建一个异 常对象并将其抛出。
异常处理的最佳实践
尽量避免异常
合理使用try-catch语句
保持异常的原子性
提供有意义的错误信息
应该尽量编写健壮的代码,避 免出现异常。例如,进行空值 检查、范围检查等。
不要过度使用try-catch语句, 只在必要时使用。对于可以预 见的异常情况,应该尽量在代 码中处理,而不是依赖于trycatch语句。
可以使用多个catch语句来处理不同类型的异常 ,每个catch语句处理一种特定的异常类型。
自定义异常
创建自定义异常类
可以通过继承Exception类或RuntimeException类来创建自定义异常类。继承 Exception类创建的是检查型异常,而继承RuntimeException类创建的是非检查 型异常。
丰富的API
Java语言提供了大量的API, 涵盖了IO、网络编程、数据库 操作、图形界面开发等方面。
Java语言的应用领域
Web开发
Java语言在Web开发领域有着广泛的应用 ,如Servlet、JSP、Struts等框架。
游戏开发
Java语言也可以用于游戏开发,如 Minecraft等游戏就是使用Java语言开发 的。

Java从入门到精通(第3版)

Java从入门到精通(第3版)

7.1 面向对 象概述
7.2 类
7.3 类的构 造方法
7.6 对象
第1篇 基础知识
01
7.7 小 结
02
7.8 实 践与练

7 类和对象
第1篇 基础知 识
8 包装类
8.1 Integer
8.4 Character
8.2 Boolean
8.5 Double
8.3 Byte
8.6 Number
01
19.2 TCP程序 设计基础
19.3 UDP程序 设计基础
第2篇 核心技术
19 网络通信
19.4 小结
19.5 实 践与练 习
第2篇 核心技术
20 数据库操作
1
20.1 数据库基础知识
2
20.2 JDBC概述
3
20.3 JDBC中常用的类和接口
4
20.4 数据库操作
5
20.5 小结
6
20.6 实践与练习
3.4 运 算符
第1篇 基础知识
3 Java语言基础
3.2 基 本数据 类型
3.5 数 据类型 转换
3.3 变 量与常 量
3.6 代码 注释与编 码规范
第1篇 基础知识
01
3.7 小 结
02
3.8 实 践与练

3 Java语言基础
第1篇 基础知识
4 流程控制
01
4.1 复合语 句
05
02
4.5 实践与 练习
28.7 公 共类设 计
28.10 进 货单模块 设计
第4篇 项目实战
28 企业进销存管理系统
28.8 系统 登录模块 设计

Java全套课件

Java全套课件
有的行为。
集合实现类
如ArrayList、 LinkedList、HashSet 等,提供了具体的集合
实现。
迭代器与遍历
使用Iterator接口和 foreach循环遍历集合元
素。
泛型编程技巧
泛型概念
泛型是Java 5引入的新特性,允许在定义类、 接口和方法时使用类型参数。
泛型类与泛型方法
定义泛型类和方法,提高代码的复用性和类 型安全。
需求分析文档编写
确定项目目标与范围
明确项目要解决的问题、目标用户、核心功能等。
编写需求规格说明书
将需求列表转化为详细的需求规格说明书,包括 功能需求、性能需求、接口需求等。
ABCD
收集与整理需求
通过访谈、问卷调查等方式收集用户需求,整理 成需求列表。
评审与修改
组织相关人员对需求规格说明书进行评审,根据 评审意见进行修改完善。
数组与字符串处理
数组的声明与初始化
介绍Java中数组的声明、初始化以及数组元素的访问方式。
数组的操作与遍历
详细讲解Java中对数组的常见操作,如排序、查找等,并给 出相应的示例代码;同时介绍数组的遍历方法和技巧。
字符串的创建与操作
阐述Java中字符串的创建方式、常用操作以及字符串的比较 规则。
字符串处理类库
模型层实现
学习如何设计数据模型和业务逻辑, 实现模型层的代码编写。
视图层实现
掌握如何使用JSP页面作为视图层, 展示数据和处理用户请求。
控制器层实现
了解控制器的作用和实现方式,学习 如何编写Servlet作为控制器层。
Spring MVC框架应用
Spring MVC概述
了解Spring MVC框架的基本概念和特 点,掌握其在Web应用开发中的优势。

Java编程技术与Web应用开发培训ppt

Java编程技术与Web应用开发培训ppt

对未来发展的展望
01
继续深入学习Java编程 技术和Web应用开发相 关前沿技术,保持技术 更新
02
结合实际项目需求,不 断提升自己的技术实力 和解决问题的能力
03
拓展自己的知识面,学 习更多的相关技术和领 域,提升自己的综合素 质和竞争力
04
积极参与技术社区和开 源项目,与同行交流学 习心得和技术分享,共 同成长进步
感谢您的观看
THANKS
如MySQL、Oracle等,用于存储和检 索数据,是Web应用开发的重要基础 之一。
Spring框架
一个流行的Java Web开发框架,提供 了IoC、AOP等先进理念,以及丰富 的Web开发组件和模块,简化了Java Web开发的复杂性。
04 java在web应用开发中的 应用
servlet与jsp技术介绍
订单的创建
当用户选择购买商品时,需要创建一个订单。这涉及收集用户 选择的商品、数量和其他相关信息,并将其存储在数据库中。
订单的展示
为了帮助用户管理他们的订单,应该能够显示他们的订单历史记 录。这通常涉及从数据库检索订单记录,并在Web应用程序中以
列表形式展示它们。
订单的修改和取消
用户应该能够修改或取消他们的订单。这可能涉及更新数 据库中的订单状态或删除订单记录。
登录功能的实现
登录功能允许已注册的用户通过输入用户名和密码来访问他们的账户。此功能通常包括一 个登录表单,用户在其中输入他们的凭据,然后系统验证这些凭据是否正确。
用户信息展示与修改
用户信息的获取
为了展示和修改用户信息,首先 需要从数据库中检索用户的信息 。这通常涉及使用SQL查询或其 他相关技术来检索特定用户的详
动态代理

2021Java零基础入门课程【渡一教育】课件PPT模板

2021Java零基础入门课程【渡一教育】课件PPT模板
0 6
2-6学习路上你 需要了解的事
03 第3章java基础语法
第3章java基 础语法
3-1java语 法结构1
3-6java
01
3-2java
语 法 结 构 606
语法结构2
02
3-5java
05
语法结构
5(循环
练习)
04
3-4java语 法结构4
03 3 - 3 j a v a 语法结构 3
包,加微信java_duyi
3. 1-3一件重要的事(wx搜索java_duyi进入学习技 4. 1-4编译与执行+环境变量(领资料加v:java_duyi如需课程资料、源码、安
装工具包,添加微信java_duyi即可
5. 1-2Java跨平台机制+环境搭建如需领取课程配套学习资料、源码、安装工具
包,加微信java_duyi
2021java零基础入门课程【渡一教 育】
演讲人 2 0 2 x - 11 - 11
report
目录
01. 第1章java开篇 02. 第2章java语言基本构成 03. 第3章java基础语法
01 第1章java开篇
第1章java开篇
1. 1-1java历史(答疑与学习资料获取wx:java_du 2. 1-2java跨平台机制+环境搭建如需领取课程配套学习资料、源码、安装工具
第3章java基础语 法
3-7java数组的使用 3-8java数组练习1 3-9java数组练习2 3-10java二维数组 3-8Java数组练习1 3-9Java数组练习2 3-10Java二维数组
感谢聆听
6. 1-3一件重要的事(wx搜索java_duyi进入学习技

《java基础教程》课件

《java基础教程》课件
检查型异常
这类异常在编译时被检查,必须显式地处理它们,否则程序将无法通过编译。常见的检查型异常包括IOException、ClassNotFoundException等。
非检查型异常
这类异常在运行时被抛出,不需要显式地处理它们。常见的非检查型异常包括NullPointerException、ArrayIndexOutOfBoundsException等。
常用操作
HashMap类提供了多种遍历键值对的方法,如keySet()、entrySet()等。
遍历
05
Java异常处理
异常的分类
Java中的异常分为两大类,即检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。检查型异常在编译时被检查,而非检查型异常在运行时才被抛出。
用于组合布尔值,返回值为布尔值。
03
跳转语句
控制程序流程的转移,包括break语句、continue语句和return语句。
01
条件语句
根据条件选择执行不同的语句块,包括if语句和switch语句。
02
循环语句
重复执行一段代码,包括for循环、while循环和do-while循环。
函数定义
定义一个具有特定功能的代码块,包括返回值类型、函数名和参数列表。
动态数组
ArrayList类提供了多种常用操作,如添加元素、删除元素、获取元素等。
常用操作
ArrayList类提供了多种遍历数组的方法,如for循环、迭代器等。
遍历
HashMap类是一个键值对存储的集合,可以通过键快速查找对应的值。
键值对存储
HashMap类提供了多种常用操作,如put()、get()、remove()等。

JAVA实验指导手册

JAVA实验指导手册

Java 实验指导 V1.0马俊JAVA 实验指导 (V1.0)编写者:马俊本实验指导需要在上课的基础上,参考教材和javadoc帮助文档来动手完成,完成后给指导老师演示,并请指导老师打分!此实验的目的是帮助初学者能够快速的掌握java语言程序设计的基本规范和设计技巧,其中后面的实验十一和十二可选作部分内容。

不怕苦,吃苦半辈子,怕吃苦,吃苦一辈子!实验一:Java语言程序设计基础(JA V A01)实验目的:掌握java语言程序的结构和基本的java语言编程技巧第一部分:验证试验1.Hello world!测试●在记事本中输入以下代码并以Hello.java存盘●用javac编译Hello.java生成Hello.class字节码文件{public static void main(String[] args){System.out.println(“Hello World!”);System.out.println(“sqrt(2)=”+Math.sqrt(2));}}请解释public class Hello 的意思____________________________________________________请指出此程序是应用程序还是小应用程序____________________________________________请写出此程序的执行结果_________________________________________________________________________________________________________________________________________2. 小应用程序测试●用记事本输入以下代码并以AppletTest.java存盘import java.applet.*;import java.awt.*;public class AppletTest extends Applet{public void paint(Graphics g){g.drawstring(“Hello world”,60,60);}}●用记事本输入以下代码并以AppletTest.html存盘<html><applet code=”AppletTest.class” width=300 height=300></applet></html>●用javac编译AppletTest.java生成AppletTest.class字节码文件●用appletviewer或浏览器打开AppletTest.html文件察看结果并填空AppletTest类和Applet类的关系是_________________________________________________AppletTest.html为_____________________和AppletTest.class的关系______________________3.命令行参数测试●用记事本输入以下代码并以paramtest.java存盘,用javac paramtest.java编译●用java paramtest [姓名] [学号] 运行察看结果并填空,(注:输入自己的真实姓名和学号)class paramtest{public static void main(String args[]){System.out.print(“\n第一个参数是:”+args[0]);System.out.println(“\n第二个是:”+args[1]);}}请解释(String args[])的含义_________________________________________________________请写出程序的执行结果:__________________________________________________________第二部分:填空试验1.以下程序利用Scanner类创建对象并输入浮点数,请填空完成程序设计。

Java基础2—{循环语句(for、while、do...while)、控制跳转语句(br。。。

Java基础2—{循环语句(for、while、do...while)、控制跳转语句(br。。。

Java基础2—{循环语句(for、while、do...while)、控制跳转语句(br。

1、循环语句1.1 for语句(1)for语句的格式:for(初始化表达式语句;判断条件语句;控制条件语句) {循环体语句;}(2)执⾏流程:a:执⾏初始化表达式语句b:执⾏判断条件语句,看其返回值是true还是false如果是true,就继续执⾏如果是false,就结束循环c:执⾏循环体语句;d:执⾏控制条件语句e:回到b继续。

(3)注意事项:初始化表达式语句只执⾏⼀次判断条件语句⽆论简单还是复杂结果是boolean类型。

循环体语句如果是⼀条语句,⼤括号可以省略;如果是多条语句,⼤括号不能省略。

建议不要省略。

1.2 for语句案例演⽰1需求:在控制台输出所有的”⽔仙花数”所谓的⽔仙花数是指⼀个三位数,其各位数字的⽴⽅和等于该数本⾝。

举例:153就是⼀个⽔仙花数。

153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153 2代码:3public class Demo01{4public static void main(String[] args) {5int count=0;6for (int i = 100; i <= 999; i++) {7int ge = i / 1 % 10;8int shi = i / 10 % 10;9int bai = i / 100 % 10;10int flowerNumber=ge*ge*ge+shi*shi*shi+bai*bai*bai;11if(flowerNumber==i){12 System.out.println("⽔仙花数是: "+i);13 count++;14 }15 }16 System.out.println("⽔仙花数有"+count+"个");17 }18 }运⾏结果:1.3 while语句1(1)while语句的格式:2 while循环的基本格式:3while(判断条件语句) {4循环体语句;5 }6完整格式:7初始化条件语句;8while(判断条件语句) {9循环体语句;10控制条件语句;11 }12(2)while语句执⾏流程:13 a:执⾏初始化条件语句;14 b:执⾏判断条件语句,看其返回值是true还是false15如果是true,就继续执⾏16如果是false,就结束循环17 c:执⾏循环体语句;18 d:执⾏控制条件语句19 e:回到b继续。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

壹 Java基础02一访问修饰符二private,public,protect,static的区别1.public(公共的)表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2.protected(受保护的)不同包中的子类能访问,default同包中的子类能访问3.private(私有的)必须要同一类才能访问static一个类的成员被声明为static时,他属于一个类,可以通过类名被访问,不需创建实例用4.static(静态)static属性定义的方法为类方法,可以通过类名来调用,不需创建实例final 用final修饰的变量为常值变量,一旦初始化,不能更改通常final与static一起使用指定一个类常量用final修饰的方法为最终方法,不能再被子类重载三面向接口编程的理解。

优点:1,利于扩展;2,暴露更少的方法;3,面向接口编程--解耦合,接口只关心传递的参数,和返回的参数,不关心业务的实现。

3.实现了程序的可插拔性,对于不同的需求切换不同的实现,降低了耦合度,随着系统复杂性的提高这个优势会越来越明显4.允许多重实现,弥补了继承的缺陷缺点:1.增加了设计的复杂度,2.可能会降低代码的可复用性3.可能会降低程序的执行效率四面向对象*-*面向对象是基于面向过程的,他们都是一种思想。

面向对象是以对象为基础,完成各种操作,强调的是对象和结果。

面向过程是以方法为基础,完成各种操作,强调的是方法和过程。

举例:洗衣服,如果面向洗衣机,就不用管过程了,只要洗衣机能把衣服洗干净就可以了。

例子:围棋面向对象:1.黑白双方,这两个的行为是一模一样的2.棋盘系统,负责绘制画面3.规则系统,负责判断输赢面向过程:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。

1 面向对象包括了三部分内容:面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。

2 面向对象分析采用人们认识客观事物和理解现实世界过程中常用的基本法则:1)认识对象及其属性;2)认识对象的整体及其组成部分;3)对象的形成及类的区分;4)对问题空间进行理解并抽象成模型.面向对象分析有五个阶段:标识对象、标识结构、标识主题、定义属性、定义服务,即分五个层次建立面向对象分析的模型。

面向对象分析的优点是使功能分析与数据分析使用统一的概念和方法,克服了结构化分析中两者之间的不一致性和不协调性.3 面向对象编程(OOP)(面向对象程序设计)是一种计算机编程架构。

OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。

面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。

4 思想特点:1.让复杂的事情简单化;2,更符合人类的思维需求;3.角色从执行者到指挥者。

5 面向对象三大基本特性,五大基本原则三(四)大特征:(抽象)封装,继承,动态。

六原则一法则:单一职责原则SRP(Single Responsibility Principle)是指一个类的功能要单一,不能包罗万象。

如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",就如同葵花宝典或辟邪剑谱的中心思想就八个字"欲练此功必先自宫",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。

我们都知道一句话叫"因为专注,所以专业",一个对象如果承担太多的职责,那么注定它什么都做不好。

这个世界上任何好的东西都有两个特征,一个是功能单一,好的相机绝对不是电视购物里面卖的那种一个机器有一百多种功能的,它基本上只能照相;另一个是模块化,好的自行车是组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和重新组装的,好的乒乓球拍也不是成品拍,一定是底板和胶皮可以拆分和自行组装的,一个好的软件系统,它里面的每个功能模块也应该是可以轻易的拿到其他系统中使用的,这样才能实现软件复用的目标。

)开放封闭原则OCP(Open-Close Principle)一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。

比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

(在理想的状态下,当我们需要为一个软件系统增加新功能时,只需要从原来的系统派生出一些新类就可以,不需要修改原来的任何一行代码。

要做到开闭有两个要点:①抽象是关键,一个系统中如果没有抽象类或接口系统就没有扩展点;②封装可变性,将系统中的各种可变因素封装到一个继承结构中,如果多个可变因素混杂在一起,系统将变得复杂而换乱,如果不清楚如何封装可变性,可以参考《设计模式精解》一书中对桥梁模式的讲解的章节。

)替换原则(the Liskov Substitution Principle LSP)子类应当可以替换父类并出现在父类能够出现的任何地方。

比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

(关于里氏替换原则的描述,Barbara Liskov女士的描述比这个要复杂得多,但简单的说就是能用父类型的地方就一定能使用子类型。

里氏替换原则可以检查继承关系是否合理,如果一个继承关系违背了里氏替换原则,那么这个继承关系一定是错误的,需要对代码进行重构。

例如让猫继承狗,或者狗继承猫,又或者让正方形继承长方形都是错误的继承关系,因为你很容易找到违反里氏替换原则的场景。

需要注意的是:子类一定是增加父类的能力而不是减少父类的能力,因为子类比父类的能力更多,把能力多的对象当成能力少的对象来用当然没有任何问题。

)依赖原则(the Dependency Inversion Principle DIP)也叫面向接口编程。

具体依赖抽象,上层依赖下层。

假设B 是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类:而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。

通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。

一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

(该原则说得直白和具体一些就是声明方法的参数类型、方法的返回类型、变量的引用类型时,尽可能使用抽象类型而不用具体类型,因为抽象类型可以被它的任何一个子类型所替代,请参考下面的里氏替换原则。

)接口分离原则(the Interface Segregation Principle ISP)模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。

接口要小而专,绝不能大而全。

(臃肿的接口是对接口的污染,既然接口表示能力,那么一个接口只应该描述一种能力,接口也应该是高度内聚的。

例如,琴棋书画就应该分别设计为四个接口,而不应设计成一个接口中的四个方法,因为如果设计成一个接口中的四个方法,那么这个接口很难用,毕竟琴棋书画四样都精通的人还是少数,而如果设计成四个接口,会几项就实现几个接口,这样的话每个接口被复用的可能性是很高的。

)合成聚合复用原则:优先使用聚合或合成关系复用代码。

(通过继承来复用代码是面向对象程序设计中被滥用得最多的东西,因为所有的教科书都无一例外的对继承进行了鼓吹从而误导了初学者,类与类之间简单的说有三种关系,Is-A关系、Has-A关系、Use-A关系,分别代表继承、关联和依赖。

其中,关联关系根据其关联的强度又可以进一步划分为关联、聚合和合成,但说白了都是Has-A关系,合成聚合复用原则想表达的是优先考虑Has-A关系而不是Is-A关系复用代码,需要说明的是,即使在Java的API中也有不少滥用继承的例子,例如Properties类继承了Hashtable类,Stack类继承了Vector 类,这些继承明显就是错误的,更好的做法是在Properties类中放置一个Hashtable类型的成员并且将其键和值都设置为字符串来存储数据,而Stack类的设计也应该是在Stack类中放一个vector对象来存储数据。

记住:任何时候都不要继承工具类,工具是可以拥有并可以使用的,而不是拿来继承的。

)迪米特法则:迪米特法则又叫最少知识原则,一个对象应当对其他对象有尽可能少的了解。

(迪米特法则简单的说就是如何做到"低耦合",门面模式和调停者模式就是对迪米特法则的践行。

迪米特法则用通俗的话来将就是不要和陌生人打交道,如果真的需要,找一个自己的朋友,让他替你和陌生人打交道。

)五Java三大特征三大特征:封装,继承,多态。

1 封装A 什么是封装?封装的原则?好处?答:封装就是把不需要对外暴露的状态信息隐藏在对象内部,不允许外部程序直接访问对象的信息,而是通过该类对外提供公共的访问方式对其访问和操作。

原则:(1)将不需要对外暴露的信息隐藏;(2)对外提供公共的访问方式。

好处:将变化隔离;提高了安全性;便于使用,提高了重用性。

B 封装就是私有,对吗?为什么?答:private是封装的一种体现形式。

方法也是封装2 继承定义:当多个类中有很多共性的内容时,我们可以把这些共性内容抽取出来封装成一个类,让这些类与这个封装的类产生关系。

这种关系就是继承。

特点:java只支持单继承,但是能够多层次继承;接口能够单实现,也能够多实现。

好处:(1)提高了代码的复用性(2)提高了代码的维护性(3)提高了代码的扩展性。

(4)让类与类产生了关系,是多态的前提。

弊端:增强了类与类的耦合性3 多态定义:同一事物在不同时刻表现出来的不同状态。

允许不同类的对象对同一消息做出响应。

即同一消息可以根据发送对象的不同而采用多种不同的行为方式。

(发送消息就是函数调用)理解:不同类的对象对同一消息作出不同的响应就叫做多态体现:父类引用指向子类对象,父类引用作为参数可以接收其子类对象,接口引用作为参数可以接收其实现类对象。

前提:(1)类与类之间要么继承,要么实现(2)要有方法重写(3)父类或者接口引用指向子类对象。

好处:(1)提高了代码的维护性(2)提高了代码的扩展性,父类引用指向子类对象。

相关文档
最新文档