4-类的重用
面向对象编程的代码重用方法

面向对象编程的代码重用方法面向对象编程(Object-oriented programming,OOP)是一种编程范式,通过将现实世界的概念封装为对象,并通过对象之间的交互来实现程序的功能。
其中一个重要的特征是代码重用,它使得开发人员可以减少代码冗余,提高代码的可维护性和可扩展性。
本文将介绍几种常见的面向对象编程的代码重用方法。
1.继承(Inheritance)继承是面向对象编程中常用的代码重用方法之一。
通过继承,子类可以从父类继承其属性和方法。
这样可以避免重复编写相似的代码,并且可以在子类中添加额外的属性和方法来满足特定需求。
例如,有一个父类Animal,定义了通用的属性和方法,如name和eat。
然后可以创建子类Dog和Cat,它们可以继承Animal类的属性和方法,同时也可以添加自己的特性,如Dog类可以有额外的属性breed 和方法bark。
2.组合(Composition)组合是通过将多个对象组合在一起以创建更大和更复杂的对象的一种代码重用方法。
在组合中,一个对象可以包含其他对象作为其属性,这样可以利用其他对象的属性和方法来实现功能。
例如,有一个Car类,其中包含Engine和Wheel对象作为其属性。
Car类可以通过调用Engine和Wheel对象的方法来实现驾驶和行驶的功能。
这样可以避免在Car类中重复编写与Engine和Wheel相关的代码。
3.接口(Interface)接口是一种定义了一组方法的抽象类。
通过实现接口,不同的类可以共享接口定义的方法,从而实现代码的重用。
例如,有一个接口Shape,其中定义了一个方法calculateArea。
然后可以创建不同的类如Circle和Rectangle来实现Shape接口,从而共享calculateArea方法的实现。
这样可以避免重复计算面积的代码。
4.混入(Mixin)混入是一种通过将代码片段插入到类中来实现代码重用的方法。
通过混入,可以在不修改类层次结构的情况下,向类中添加新的属性和方法。
类的四个基本特征

类的四个基本特征
类的四个基本特征是:封装性、继承性、多态性和抽象性。
1. 封装性(Encapsulation):将数据和对数据的操作封装在一起,通过定义类的成员变量和成员方法,隐藏内部实现的细节,提供接口供外部访问和操作。
封装性能够提高代码的可维护性和可复用性,同时也能够保护数据的安全性。
2. 继承性(Inheritance):通过继承关系,一个类可以继承另一个类的属性和方法,从而实现代码的重用和扩展。
子类可以继承父类的成员变量和成员方法,并可以增加自己的特有成员变量和成员方法。
继承性能够提高代码的可扩展性和可维护性。
3. 多态性(Polymorphism):多态性是指一个对象可以有多种形态,在不同的情境下表现出不同的行为。
通过多态性,可以使用父类的引用指向子类的对象,从而调用子类的方法。
多态性能够提高代码的灵活性和可读性。
4. 抽象性(Abstraction):抽象性是指通过抽象类或接口定义出一组相关的属性和方法,而不关注具体的实现细节。
抽象类和接口可以定义出一种规范和契约,供其他类实现和使用。
抽象性能够提高代码的可扩展性和可维护性。
7.Java的基本可重用类

Java软件设计基础7. Java的基本可重用类3.java.util包 • java.util包的构成– 由一些实用类组成,有些类是Java语言不可缺少的。
School of Computer Science and TechnologyPDF 文件使用 "pdfFactory Pro" 试用版本创建 • 日期时间类Date– 提供了独立于具体系统的日期/时间的表示形式。
– 日期时间类的创建方法:• 把当前日期和时间保存到所创建的Date实例中:public Date()• 根据给定的year、month、date参数创建一个Date实例:public Date(int year,int month,int date)• 根据给定的year、month、date、hours、minutes参数创建一个Date实 例:public Date(int year,int month,int date,int hours,int minutes)• 根据给定的year、month、date、hours、minutes、seconds参数创建一 个Date实例:public Date(int year,int month,int date,int hours,int minutes,int seconds) School of Computer Science and TechnologyPDF 文件使用 "pdfFactory Pro" 试用版本创建 – 日期时间类提供的方法:public int getYear( ) getYear( public int getMonth( ) getMonth( public int getDate( ) getDate( public int getDay( ) getDay( public int getHours( ) getHours( public int getMinutes( ) getMinutes( public int getSeconds( ) getSeconds( public boolean befor(Date when) public boolean after(Date when) public boolean equal(Object obj) obj) public String toString( ) toString( 返回当前日期中的年份 返回当前日期中的月份 返回当前日期在月份中的日期值(0~31) 返回当前日期在月份中的日期值(0 31) 确认某天是星期几 返回当前日期中的小时数 返回当前日期中的分钟数 返回当前日期中的秒数 判断日期实例所代表的时间是否早于when 判断日期实例所代表的时间是否早于when 判断日期实例所代表的时间是否晚于when 判断日期实例所代表的时间是否晚于when 比较两个日期对象是否相等 返回当前日期参数的字符串表示形式School of Computer Science and TechnologyPDF 文件使用 "pdfFactory Pro" 试用版本创建 • 向量类Vector– 向量和数组的异同:• 适合使用向量的场合:– 如果需要频繁进行对象的插入和删除,或需要处理的对象数目不定; – 列表成员全部都是对象,或者可以用对象方便的表示; – 需要很快确定列表内是否存在某一特定对象及其存放位置。
软件工程导论-期末题库(完整版)之欧阳化创编

1.填空题1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。
2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。
3.系统流程图是描述__物理模型__的传统工具,用图形符号表达了系统中各种元素之间的_____信息流动_____情况。
4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。
5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集成测试)、__确认测试__和_____系统测试(集成测试)____6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。
7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。
8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。
9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。
10.实施精化设计的目标是基于模块的“高内聚低耦合”的原则,提高模块的_独立性。
欧阳化创编11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。
12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。
13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。
14.软件工程三要素包括_方法_、__工具___和__过程___,其中,_过程_支持软件开发的各个环节的控制和管理。
15.类构件的重用方式有_实力重用__、__继承重用______和_ 多态重用__三种。
16.能力成熟度模型分为5个等级:初始级、____可重复____级、__已定义___级、____已管理__级和__优化____级。
人心难测,这几种类型的人不可重用

人心难测,这几种类型的人不可重用一个领导者想要借用众人的力量,来成就自己的事业,首先要研究的就是识人之术。
那么怎么才能够有效地识别人才,做到知人善用呢?首先可以使用排除法,即搞清楚哪些人不可以结交,哪些人不能够重用。
“亲贤臣,远小人。
”对于这一点,诸葛亮感触颇深,他认为有四种类型的人员,领导者一定不能重用,否则必定悔之晚矣。
1.温良而为诈者有一种人,平时温文尔雅,为人处事一点架子没有,见到谁都客客气气的,能够和什么样的人都合得来,在组织内部非常受欢迎,人气很高。
然而领导者对于这种人是不是就可以放心使用呢?不一定!诸葛亮指出这种人可能是“温良而为诈者”,即通过刻意塑造良好的公众形象来欺世盗名。
这种人有什么特点呢?第一,为人虚伪,说话常常言不由衷,让人不得要领;第二,不讲原则,不能够坚持正确的举措,而容易随波逐流;第三,野心不小,肯煞费苦心做如此伪装的人,必然有很大的企图。
最为典型的案例就是王莽,他通过打造完美的道德形象,最终图穷匕见篡夺西汉政权。
2.外恭而内欺者这种类型的人,与前一种略有不同,他们常常出现在组织的中层。
他们的特点就是在上级领导面前表现得十分恭顺,很会揣摩领导意图并投其所好,而对待下属则十分傲慢和刻薄,一点不顾及别人的死活和组织整体的利益。
重用这种“外恭而内欺者”非常有危害性:一方面,可能导致重用他一人,而得罪其他所有人;另一方面,也可能因为他“当着一套,背着一套”的行事风格而酿成大祸。
最典型的案例就是马谡,平时非常得领导诸葛亮的欢心,但关键时刻却自行其是,导致街亭失败,使诸葛亮最有希望的一次北伐功亏一篑。
3.外勇而内怯者陪同荆轲一起刺杀秦王的秦舞阳,就是典型的“外勇而内怯者”。
这种人平时给人的印象是天不怕地不怕,什么事都敢去干,但是一到关键时刻就掉链子。
因此一个高明的领导者,在安排重要任务的时候,一定要及时甄别这类人,决不能对其委以重任,否则必将埋下隐患。
4.尽力而不忠者诸葛亮将“尽力而不忠者”放在最后,说明这种类型的小人是非常不容易识别出来的。
《软件体系结构实用教程》课件第1章

·可修改的构件。可修改的构件可以进行版本替换。如果 对原构件修改错误、增加新功能,可以利用重新“包装”或 写接口来实现构件的替换。这种构件在应用系统开发中使用 的比较多。
13
第1章 软件重用与构件技术
图1-1 重用驱动的软件开发过程
14
第1章 软件重用与构件技术
应用者重用关心利用可重用构件来建立新系统,它包括 以下几个步骤:
(1) 寻找候选的可重用的构件,由它们来产生软件生命周 期每一阶段的交付。
(2) 对候选构件进行评价,选择那些适合于在本系统内重 用的构件。
10
第1章 软件重用与构件技术
1.1.3 重用驱动的软件过程 1.软件重用失败的原因 尽管软件产业从本质上是支持重用的,但到目前为止,
很少有成功实施重用的公司。主要原因有以下几点: (1) 缺乏对为什么要实施重用的了解。 (2) 认为重用没有创造性。 (3) 管理者没有对重用承担长期的责任和提供相应的支持。 (4) 没有支持重用的方法学。
(4) 根据构件重用时的形态,分为动态构件和静态构件。 动态构件是运行时可动态嵌入、链接的构件,如对象链接和 嵌入、动态链接库等;静态构件如源代码构件、系统分析构 件、设计构件和文档构件等。
23
第1章 软件重用与构件技术
(5) 根据构件的外部形态,将构成一个系统的构件分为以 下5类:
·独立而成熟的构件。独立而成熟的构件得到了实际运行 环境的多次检验,该类构件隐藏了所有接口,用户只需用规 定好的命令使用即可,例如数据库管理系统和操作系统等。
面向对象的4个基本特征
面向对象的4个基本特征面向对象的4个基本特征面向对象编程(Object-Oriented Programming,OOP)是一种计算机编程范式,它将现实世界中的事物抽象为对象,通过对象之间的交互来完成程序的设计和实现。
面向对象编程具有以下4个基本特征:一、封装封装是指将数据和行为组合在一个单元中,并对外部隐藏其内部细节。
在面向对象编程中,一个类就是一个封装了数据和行为的单元。
类中的数据被称为属性(attribute),行为被称为方法(method)。
封装有以下优点:1. 隐藏内部细节:通过封装可以隐藏类内部的实现细节,使得外部无法直接访问类内部的数据和方法。
2. 提高安全性:通过封装可以限制对属性和方法的访问权限,防止误操作或恶意操作。
3. 简化编程:通过封装可以提供简单易用的接口,使得使用者无需了解类内部的实现细节即可使用该类。
二、继承继承是指从已有类派生出新类,并且新类具有父类所有属性和方法。
在面向对象编程中,子类可以重写父类方法或添加新方法来扩展其功能。
继承有以下优点:1. 代码重用:通过继承可以避免重复编写相似的代码,提高代码的复用性。
2. 简化设计:通过继承可以将公共属性和方法抽象出来,减少代码冗余,简化程序设计。
3. 提高扩展性:通过继承可以方便地添加新功能或修改已有功能,提高程序的可扩展性。
三、多态多态是指同一种行为具有多种不同表现形式或形态的能力。
在面向对象编程中,多态通常体现为父类引用指向子类对象。
由于子类重写了父类的方法,因此相同的方法调用会产生不同的结果。
多态有以下优点:1. 简化编程:通过多态可以使用统一的接口来处理不同类型的对象,简化程序设计和维护。
2. 提高灵活性:通过多态可以方便地替换对象类型,实现动态绑定和运行时多态。
3. 提高可扩展性:通过多态可以方便地添加新类型或修改已有类型,并且不会影响原有程序逻辑。
四、抽象抽象是指将具体事物中共性部分提取出来,并忽略其个性差异。
类结构的概念
类结构的概念类结构是面向对象编程中的一个重要概念,它是对一类相似对象的共同特征、属性和行为的抽象。
在面向对象编程中,类是对象的蓝图,通过实例化类可以创建多个具有相同特征和行为的对象。
在类结构中,类是对一类对象的抽象描述,它定义了这类对象的属性和行为。
类包含了一组成员,包括属性和方法。
属性定义了对象的特征,是类的数据成员;方法定义了对象的行为,是类的成员函数。
类的对象是根据类定义的模板创建的具体实力,可以通过访问类的成员来操作对象的属性和行为。
类可以通过继承扩展和重用已有的类。
继承是面向对象编程中的一个重要概念,它允许一个类从另一个类派生出来,并继承新类所需的属性和行为。
通过继承,可以构建更加复杂的类结构,实现代码的重用和扩展。
类结构具有以下特点:1. 抽象性:类是对一类对象的抽象描述,它只描述了对象的共同特征和行为,而不关注具体的对象。
通过类的实例化可以创建具体的对象。
2. 封装性:类封装了属性和方法,只暴露必要的接口供外部访问。
封装可以隐藏实现细节,提高代码的安全性和可维护性,并且可以实现数据隐藏。
3. 继承性:类可以通过继承扩展和重用已有的类。
继承允许一个类从另一个类派生出来,并继承父类的属性和行为。
继承可以建立类的层次结构,实现代码的重用和扩展。
4. 多态性:多态是面向对象编程的一个重要特性,它允许不同类型的对象通过统一的接口来访问。
多态性可以提高代码的灵活性和可扩展性。
类结构的设计需要考虑以下几个方面:1. 类的划分:将对象划分成几个相似的类,并且每个类有自己特有的属性和行为。
一个类应该尽量描述一个独立的概念。
2. 属性和方法的设计:定义类的属性和方法。
属性描述对象的特征,方法描述对象的行为。
属性应该尽可能私有化,只通过方法进行访问。
3. 类之间的关系:类之间可以有不同的关系,包括关联、聚合、组合和继承等。
关系可以通过类之间的引用和依赖来实现。
4. 类的继承和重用:通过继承可以扩展和重用已有的类。
类与类之间的六种关系
类与类之间的六种关系在面向对象的编程中,类与类之间可以存在多种关系,这些关系表现出不同的结构和行为。
本文将介绍类与类之间的六种关系,并对其做简要说明。
1. 继承关系(Inheritance)继承是一种类与类之间最基本的关系之一。
通过继承,一个类可以继承另一个类的属性和方法,从而构建出一个新的类,新的类在功能方面可以包含父类的所有特性,也可以在此基础上增加自身的新特性。
2. 实现关系(Implementation)实现关系是一种类与接口(接口是一种规范,只包含方法定义)之间的关系。
一个类可以实现一个接口,从而获得该接口定义的所有方法,该类必须实现接口中所有的方法。
实现关系实现了接口与类的分离,提高了代码的灵活性和可重用性。
3. 聚合关系(Aggregation)聚合关系是一种“部分与整体”的关系,即一个类(整体)可以包含另一个类(部分)作为它的一个组成部分,与此同时,一个部分可以属于多个整体。
聚合关系常常用于构建复杂对象,可以形成一些常见的设计模式,如观察者模式、组合模式等。
4. 组合关系(Composition)组合关系也是一种“部分与整体”的关系,与聚合关系不同的是,组合关系强调整体与部分的生命周期一致,即一个整体被销毁时,它的所有部分也将被销毁。
组合关系常用于构建复杂的对象,例如 window 对象里面包含了多个控件。
5. 依赖关系(Dependency)依赖关系是一种“使用与被使用”的关系,即一个类使用了另一个类的服务,而这种使用关系通常是一种短暂的关系,只存在于方法调用的过程中。
依赖关系体现了类与类之间的耦合性,降低了代码的灵活性。
6. 关联关系(Association)关联关系是一种“拥有与被拥有”的关系,它比依赖关系更强,表现为一个类知道另一个类的存在,并且能够通过实例变量、静态变量等方式保存对另一个类的引用。
关联关系通常用于构建一些复杂的系统,比如 UML 中的类图,它们用集合来表示关联关系。
做管理,具备这4种心态和3个责任,才能令员工信服、老板重用
做管理,具备这4种心态和3个责任,才能令员工信服、老板重用做管理,具备这4种心态和3个责任,才能令员工信服、老板重用管理是一个非常复杂的工作,需要具备不同的能力和素质。
但是,无论是哪种类型的管理,想要让员工信服、老板重用,都必须具备以下4种心态和3个责任。
一、4种心态:1.乐观心态乐观是一种非常重要的心态,它能够帮助你保持积极向上的态度,减少不必要的焦虑和压力。
作为管理者,你需要充满信心,相信自己能够掌握团队的整体运作,并且相信自己的团队也能够取得成功。
在面对困难和挑战的时候,你需要沉着冷静、深思熟虑,同时也要从中学会积累经验和教训。
2.谦虚心态谦虚是一种重要的素质,能够帮助你保持清醒的头脑,不回避现实。
作为管理者,你需要尊重他人的意见和建议,不要把自己的看法强加给别人。
同时,你需要对自己的能力和知识有清晰的认识,能够客观地评估自己所担任的职责和工作任务。
责任心是管理者必备的品质之一,能够帮助你承担责任、解决问题和推动工作的进展。
作为管理者,你需要为自己的行为和决策负责,同时也要为团队和员工的工作负责。
你需要明确自己的职责和目标,能够管理和使用时间、资源等,让团队高效运转。
4.创新心态创新是推动事业发展的重要动力之一。
作为管理者,你需要时刻关注市场、行业和技术的发展方向,紧跟时代潮流,积极寻找新的商机,推动企业的转型和发展。
同时,你需要鼓励员工创新,提供包容的环境和机会,让员工展现他们的创造力和潜能。
二、3个责任:1.目标责任目标责任是管理者的一项基本任务,要求你制定明确的工作目标,并以此来推动团队的发展进程。
目标是团队成员行动的方向,也是成为优秀管理者的重要标志之一。
你需要制定方向并付诸于实践。
培养责任是一项涉及到公司文化的任务,只有在融入了企业文化并理解企业使命的人,才能够为公司长短期目标做出真正的贡献。
你需要确保员工和团队的愿景与目标一致,并鼓励他们指向建立稳定的职业生涯,提升个人成长和培养团队的能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:
• 若接口定义为默认型访问权限,则接口中的成员 变量全部隐含为final static型。这意味着它们不能 被实现接口方法的类改变,并且为默认访问权限 • 接口中定义的所有成员变量都必须设置初值 • 若接口定义为public型访问控制,则接口中的方法 和成员变量全部隐含为public型 • 当接口保存于文件时,其文件命名方法和保存类 的文件命名方法类同。即保存接口的文件名必须 与接口名相同。一个文件可以包含若干个接口, 但最多只能有一个接口定义为public,其他的接口 必须为默认
// 具有中心点、半径及颜色的构造方法 public Ball(double xValue, double yValue, double r, String c) { this(xValue, yValue, r); // 调用三个参数的 构造方法 colour = c; } public String toString() { return "A ball with center " + center.toString() + “radius “ + Double.toString(radius) + “, colour “ + colour; }
2.实现接口
• 一旦定义了一个接口,一个或更多的类就能实现 这个接口。为了实现接口,类必须实现定义在接 口中的所有方法。每个实现接口的类可以自由地 决定接口方法的实现方法 • 定义类时实现接口用关键字implements。一个类 只能继承一个父类,但可以实现若单继承
• 在Java中,每一个类只可以有一个父类,不允许有多个父类。 但是,一个类可以有多个子类。父类含有其所有子类共同的内 容,每一个子类各自具有与其他子类不相同的内容。 • 例如,“狗”类和“人”类都是“哺乳动物”类的子类,它们 即具有胎生、哺乳、恒温等“哺乳动物”类的共同特点,又具 有各自的不同的特点。“狗”类有尾巴,而“人”类使用语言。
}
• 接口的使用 Public class Consumer{ public static void main(string args[]){ Mp3 myMp3=new GoldMp3(); myMp3.paly(); myMp3.pause(); myMp3.stop(); } }
• InterfaceDemo01
二、 抽象类和最终类-- 抽象类
• 类中允许定义抽象方法。所谓抽象方法是指只有方法 的定义,没有方法的实现体的方法。用关键字 abstract来声明抽象方法。例如: abstract void draw() • 包含抽象方法的类称为抽象类。换句话说,任何包含 抽象方法的类必须被声明为抽象类。例如: abstract class Shape
• 为什么需要抽象类
– 抽象类是类层次中较高层次的概括,抽象类的作用是让其他类来继承 它的抽象化的特征。
–
例4.4
– 用abstract关键字修饰一个类时,该类叫做抽 象类。
• 抽象类必须被继承,所以抽象类中会包括被它的所 有子类共享的公共行为和公共属性; • 抽象类不能被直接实例化。它只能作为其它类的超 类,这一点与最终类(final类)正好相反。
private double x; private double y; public Point() { } public Point(double x, double y) { this.x = x; this.y = y; } public String toString() { return "(" + Double.toString(x) + ", " + Double.toString(y) + ")"; } }
– 用abstract修饰一个方法时,该方法叫做抽象 方法。
• 抽象方法必须被重写;
• 构造方法不能被声明为抽象的
• 抽象方法只有声明,不能有实现; • 定义了抽象方法的类必须是抽象类; • abstract和static不能同时存在,即不能有abstract static方法
二、 抽象类和最终类--最终类
• 设计方法是:如果父类中存在不允许其子类访问的成 员变量,那么这些成员变量必须以private修饰符声明 ;如果父类中存在只允许其子类访问、不允许其他类 访问的成员变量,那么必须以protected修饰符声明; 父类中公用的成员变量必须以public修饰符声明;如 果父类中存在只允许该包访问、不允许其他包访问的 成员变量,那么必须声明为默认
• 最终类是指不能被继承的类,即不能再用最终类派生 子类。如果不希望某个类被继承,可以声明这个类为 最终类。最终类用关键字final来说明。例如: public final class C • 如果创建最终类似乎不必要,而又想保护类中的一些 方法不被覆盖,可以用关键字final来指明那些不能被 子类覆盖的方法,这些方法称为最终方法。例如: public class A { public final void M(); }
(4)成员变量和方法的隐藏与覆盖
• 当父类的某个成员变量不适合子类时,子类可以 重新定义该成员变量;当父类的某个方法不适合 子类时,子类可以重新定义它,这称为子类对父 类方法的覆盖 • 子类对父类方法的覆盖是面向对象程序设计中经 常使用的设计方法。 • 注意:方法的重写(overloading)和方法的覆盖 (overriding)是两个不同的概念,在软件设计中 实现的功能也不同。 例4.1 设计Shape类,Ellipse和Rectangle子类
}
• 接口的实现 Public class GoldMp3 implements Mp3{
Public abstract void play(){ System.out.println(“play”);} Public abstract void pause(){ System.out.println(“pause”);} Public abstract void stop(){ System.out.println(“stop”);}
(2)子类继承父类的方法
• 子类继承父类方法的规则类似于子类继承 父类成员变量的规则。继承原规是:
能够继承父类中那些声明为public和protected 的方法。 不能继承父类中那些声明为private和默认的方 法 如果子类方法与父类方法同名,则不能继承。 此时称子类方法重写了父类中的同名方法 不能继承父类的构造方法
• 例Shape.java
• PolDemo01.java • PolDemo02.java • PolDemo03.java
构造方法与多态
• 问题描述:
– 构造方法与其它方法区别之一就是构造方法并 不具有多态性,那么构造方法如何在复杂的分 级结构中同多态性一起使用呢?
class Point {
class Ball { private Point center; //中心点 private double radius; //半径 private String colour; //颜色 public Ball() {}
// 具有中心点及半径的构造方法 public Ball(double xValue, double yValue, double r){ //调用类Point中的构造方法 center = new Point(xValue, yValue); radius = r; }
〈父
(1)子类继承父类的成员变量
• 具体的继承原则是:
能够继承父类中那些声明为public和protected的成员变量 不能继承父类中那些声明为private和默认的成员变量 如果子类声明一个与父类成员变量同名的成员变量,则不能 继承父类的同名成员变量。此时称子类的成员变量隐藏了父 类中的同名成员变量
(3)this引用和super引用
• this引用。Java中,每个对象都具有对其自身引 用的访问权,这称为this引用。访问本类的成员变 量和方法的语句格式为: this.〈成员变量名〉 this.〈方法名〉 • super引用。使用关键字super可以引用被子类隐 藏的父类的成员变量或或被子类重写的方法,这 称为super引用。super引用的语句格式为: super.〈成员变量名〉 super.〈方法名〉
类 的 重 用
BUSINESS
一、类的继承
二、抽象类和最终类
三、接口
四、多态
一、类的继承
1. 继承 2. 创建子类 3. 方法的三种继承形式
1.继承
• 继承(Inheritance)
– 指一个类(Class)可以继承其它类的所有内容,包括变 量和方法。
• 被继承的类称为父类或者超类 • 继承后产生的类成为子类或者派生类。
四、接口
• Java语言只支持单继承机制,不支持多继承。 • 接口和抽象类非常相似,都是只定义了类中的方 法,没有给出方法的实现 • Java语言不仅规定一个子类只能直接继承自一个 父类,同时允许一个子类可以实现多个接口。
1. 定义接口 2. 实现接口
1. 定义接口
• 接口的定义格式为: 〈修饰符〉interface〈接口名〉 其中,〈修饰符〉可以是public,也可以缺 省。当为缺省时,接口只能被与它处在同 一包中的方法访问;当声明为public时,接 口能被任何类的方法访问。〈接口名〉是 接口的名字,可以是任何有效的标识符。 例如, public interface PrintMessage
2. 创建子类
• 利用extends创建子类 [〈修饰符〉] class 〈子类名〉 extends 类名〉 例如 class Sub1 extends Super
• 不使用extends的继承
• 如果没有使用extends,则该类为ng.Object 的子类。 • 注意:在Java语言中,所有的类都是由Object类派生出来的, 比如前面介绍的String类,以及用户自己新建的类。