付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象高级特性一
回顾包的概念访问控制数组的相关概念一维数组的声明和初始化二维数组的声明和使用
内容简介封装和继承方法重写及变量隐藏this关键字super关键字final关键字
什么是封装将数据连同函数捆绑在一起,形成新的类型,这被称为封装。java语言中,对象就是对一组变量和相关方法的封装,其中变量表明了对象的状态,方法表明了对象具有的行为。通过对象的封装,实现了模块化和信息隐藏。通过对类的成员施以一定的访问权限,实现了类中成员的信息隐藏。封装对象同时具有属性和方法两项特性对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割谁看见过只有“完好的零件和颜色”而不能开动的汽车?封装的示例接口
采购经理罗杰斯先生法拉力公司.迪斯尼汽车公司.市场经理雪莉女士
要求
封装的示例有选择地提供数据法拉力公司迪斯尼汽车公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本封装的示例实体法拉力公司实体迪斯尼汽车公司
AutiLtd.ButoLtd.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车的组装方法计算汽车的组装成本计算工资发出订单编制必要报告
什么是继承继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类(超类),父类包括所有直接或间接被继承的类。子类可继承父类中的变量及方法,也可定义其自身特有的变量及方法。
Java中不支持多重继承。10生活中的继承2-1生活中,继承的例子随处可见动物食草动物食肉动物谁是父类?谁是子类?能说出继承的特点吗?继承需要符合的关系:is-a,父类更通用、子类更具体11生活中的继承2-2子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性巴士是汽车吗?卡车是汽车吗?出租车是汽车吗?最大载客数量报站引擎数量外观颜色刹车加速汽车最大载重量卸货所属公司最大载客数量打发票属性行为请问:出租车包含哪些属性和行为呢?12为什么需要继承4-1开发程序教员类,其中教员分为Java教员以及.NET教员,各自的要求如下:Java教员属性:姓名、所属中心方法:授课(步骤:打开Eclipse、实施理论课授课)、自我介绍.NET教员属性:姓名、所属中心方法:授课(步骤:打开Visualstudio2005、实施理论课授课)、自我介绍13请问:以下这个解决方案中存在着什么问题?为什么需要继承4-2publicclassAccpDotNetTeacher{privateStringname;//教员姓名privateStringschool;//所在中心publicAccpDotNetTeacher(StringmyName,StringmySchool){name=myName;school=mySchool;}publicvoidgiveLession(){System.out.println("启动
VisualStudio2005");System.out.println("知识点讲解");System.out.println("总结提问");}publicvoidintroduction(){ System.out.println("大家好!我是" +school+"的"+name+".");}}publicclassAccpJavaTeacher{privateStringname;//教员姓名privateStringschool;//所在中心publicAccpJavaTeacher(StringmyName,StringmySchool){name=myName;school=mySchool;}publicvoidgiveLession(){System.out.println("启动
Eclipse");System.out.println("知识点讲解");System.out.println("总结提问");}publicvoidintroduction(){ System.out.println("大家好!我是" +school+"的"+name+".");}}代码存在重复,违背了“writeonce,onlyonce”的原则14为什么需要继承4-3如何改进?有没有可能建立继承关系,让子类自动继承父类的属性和方法?Java教员是教员吗?.NET教员是教员吗?publicclassAccpTeacher{privateStringname;//教员姓名privateStringschool;//所在中心publicAccpTeacher(StringmyName,StringmySchool){name=myName;school=mySchool;}publicvoidgiveLesson(){System.out.println("知识点讲解");System.out.println("总结提问");}publicvoidintroduction(){ System.out.println("大家好!我是“
+school+"的"+name+"。");}}现在,所有子类中相同的代码都抽取到父类中了属
性行
为姓名所在中心授课自我介绍教员Java教员.NET教员15为什么需要继承4-4publicclassAccpJavaTeacher2extendsAccpTeacher{publicAccpJavaTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}publicvoidgiveLesson(){System.out.println("启动Eclipse");super.giveLesson();}}publicclassAccpDotNetTeacher2extendsAccpTeacher{publicAccpDotNetTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}publicvoidgiveLesson(){System.out.println("启动VisualStudio.NET");super.giveLesson();}}使用继承,可以有效实现代码复用子类自动继承父类的属性和方法,子类中不再存在重复代码16如何实现继承3-1在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:publicclassAccpJavaTeacher2
extends
AccpTeacher{//其余代码省略}在父类中只定义一些通用的属性与方法,例如:publicclassAccpTeacher{privateStringname;//教员姓名privateStringschool;//所在中心publicAccpTeacher(StringmyName,StringmySchool){//初始化属性值}publicvoidgiveLesson(){//授课方法的具体实现}publicvoidintroduction(){//自我介绍方法的具体实现
}}17如何实现继承3-2子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法publicclassAccpTeacher{privateStringname;//教员姓名privateStringschool;//所在中心publicAccpTeacher(StringmyName,StringmySchool){//初始化属性值}publicvoidgiveLesson(){ //授课方法的具体实现}publicvoidintroduction(){ //自我介绍方法的具体实现
}}publicclassAccpJavaTeacher2extendsAccpTeacher{publicAccpJavaTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}publicvoidgiveLesson(){System.out.println("启动Eclipse");super.giveLesson();}}由于giveLesson()方法与父类的实现有所不同,因此重写了该方法方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型父类中的属性和方法可以被子类继承18publicclassAccpJavaTeacher2extendsAccpTeacher{publicAccpJavaTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}}如何实现继承3-3子类的构造方法中,通过super关键字调用父类的构造方法方法重写后,通过super关键字调用父类的方法publicclassAccpJavaTeacher2extendsAccpTeacher{publicvoidgiveLesson(){System.out.println("启动Eclipse");super.giveLesson();}}通过调用父类的构造方法,完成对属性值的初始化19一切类的“祖先”——Object在Java中,所有的Java类都直接或间接地继承了java.lang.Object类publicclassMyObject{//…}publicclassMyObectextends
Object{
//…}在Eclipse中调用MyObject对象的成员,会自动弹出继承自Object的所有方法
继承性子类可继承父类方法和变量.
同一个包中 不同包中的子类privatedefault★protected★ ★public★ ★
变量隐藏及方法重写原则变量隐藏原则:
子类中变量名与继承自父类的变量名相同时,则继承自父类的变量将被隐藏。方法重写原则://重载子类有个方法与父类的方法完全一致叫做重写重写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。改写后的方法不能比重写的方法产生更多的例外。
变量隐藏示例变量隐藏即指在子类中重新定义父类中 已有的变量;例:classCar{intcolor_number;intdoor_number=2;intspeed=100;publicvoidpush_break(){speed=0;}}
classTrash_CarextendsCar{doubleamount;
Stringcolor_number=“四个”;intspeed=300;publicvoidfill_trash(){…}}
方法重写(覆盖)示例方法重写即指在子类中重新定义父类中 已有的方法;例:classCar{intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}}
classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}
publicvoidpush_break(){speed=speed–10;}}
super关建字作用调用构造方法:super()必须是子类构造函数第一个执行的语句,如果super()没有被用到,每个超类的默认的或无参数的构造函数将被执行。调用被隐藏变量及方法:
可通过super关键字调用被隐藏的父类中的变量及方法。
super关建字使用格式访问父类被隐藏的成员变量, 如:
super.variable;调用父类中被重写的方法,如:
super.Method([paramlist]);调用父类的构造函数,如: super([paramlist]);
多层次继承Java不支持多继承,可多层次继承。
构造方法调用在类层次结构中,构造方法以派生的顺序调用,从超类(父类)到子类如右图类的层次结构; 创建对象:newSonClass3();
则构造方法调用顺序为: Object→SonClass1→ SonClass2→SonClass328this关键字this是Java的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。实例方法必须通过对象来调用,当this关键字出现在类的实例方法中时,代表正在调用该方法的当前对象。成员函数中定义了和成员变量中相同的变量时,引用成员变量要用this.构造函数中调用同一个类的其他构造函数时用this。29【例】编写两个重载构造函数的类,在第二个构造函数中使用this调用第一个构造函数。publicclassThisConstructorCall{ publicThisConstructorCall(Strings){ System.out.println("s="+s); } publicThisConstructorCall(inti){ this("i="+i); } publicstaticvoidmain(Stringargs[]){ThisConstructorCallt=newThisConstructorCall("Stringcall");ThisConstructorCallct=newThisConstructorCall(47); }}s=Stringcalls=i=4730this关键字的示例classPixel{ intx;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年网络安全业务考核试卷(附答案)
- 2026年律师执业资格考试题库(含答案)
- 2026年城乡规划原理题库(含答案)
- (2026年)创伤中心年度工作总结汇报
- 板栗种植及加工项目可行性研究报告
- 中秋月饼促销策划方案
- 全民国家安全教育感想
- 工程自检自查报告范文
- 关于手术安全核查制度
- 辽宁省职工退休政策
- 《药用辅料附录检查指导原则》2025
- 模具质量管理体系培训
- 科普医学知识:失眠
- Unit1MyDreamJobDevelopingtheTopicOralReadingforwriting课件仁爱科普版八年级英语上册
- 《电子商务基础 第2版》 课件全套 王欣 项目1-7 电子商务认知 -网店开设
- 设备维修组长工作总结
- 急性创伤急救培训课件
- 南宁三中小升初数学试卷
- 医院环境清洁消毒与监测
- 建筑工程装饰设计统一标准及强制性标准规范
- JG/T 478-2015建筑用穿墙防水对拉螺栓套具
评论
0/150
提交评论