版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目五类的封装、继承与多态Java程序设计面向对象设计的三大特征Java程序设计封装继承多态抽象(类与对象的概念)封装Java程序设计封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。用户使用计算机,只需要用手单击键盘就可以实现一些功能,用户无需知道计算机内部是如何工作的注意:类只要提供了方法,它的具体过程无需考虑,直接调用就可以了,比如输出类方法封装的优势1、良好的封装能够减少耦合。2、类内部的结构可以自由修改。3、可以对成员进行更精确的控制。4、隐藏信息,实现细节。Java程序设计封装的过程Java程序设计封装的过程Java程序设计提示:能根据提示语句进行查错改错封装的过程Java程序设计任务:创建一个封装的会员类思路:
1、创建一个封装的会员类,有四个属性privateintcustNo;privateStringcustName;privateStringcustBir;privateintcustScore;
2、并创建四个属性的getter/setter方法
3、创建会员信息的显示方法custshow()
4、创建测试类进行测试
继承Java程序设计继承是面向对象程序设计方法中实现软件重用的一种重要手段,通过继承可以更有效地组织程序结构,明确类之间的关系,并充分利用已有的类为基础,进而派生出新的类,而不需编写相同的程序代码,以此来通过继承实现代码的复用,从而完成更复杂的设计、开发。继承Java程序设计
当处理一个问题时,可以将一些有用的类保留下来,这些类通常有相同的属性,甚至相同的方法,当遇到同样问题的时候可以拿来复用。例如鸽子具有鸟类相同的属性和行为,便可以在创建鸽类的时候将鸟类拿来复用,并且保留鸟类具有的属性和行为。鸟类家鸽信鸽白麻雀野麻雀家麻雀继承的概念Java程序设计
面向对象程序设计中的继承是利用现有的类创建新类的过程,现有的类称作基类(或父类),创建的新类称作派生类(子类)。
由图可得到由继承而得到的类称为子类,被继承的类称为父类(超类)。派生类继承基类的状态和行为,并根据需要增加它自己的新的状态和行为。注意:①子类可以继承父类中可访问的【访问权限设定为public,protected或无权限修饰符(若同包)】成员变量和方法。但是不能继承访问权限为private的成员变量和方法。②一个类只能有一个直接父类。③父类包括所有直接或间接被继承的类。④Java不支持多重继承(子类只能有一个父类)。类的树形结构Java程序设计Java的类按继承关系形成树形结构。这个树形结构中,根节点是Object类(Object是java.lang包中的类),即Object是所有类的祖先类。一个类可以有多个子类,也可以没有子类,但它必定有一个父类(Object除外),换句话说,除了Object类,每个类都有且仅有一个父类,一个类可以有多个或零个子类。继承的定义Java程序设计定义:
继承主要通过关键字extends来定义一个类的子类,格式如下:class子类名extends父类名{…}举例:publicclassFather{ //父类的属性 floatweight,height; Stringhead; //父类的方法
voidspeak(Strings) {System.out.println(s); }}//定义一个子类son继承于父类FatherpublicclassSonextendsFather{ //定义子类自己的属性 Stringhand,foot; publicstaticvoidmain(String[]args){ //对子类创建对象s Sons=newSon();//继承父类的weight属性
s.weight=140;
System.out.println(s.weight);//执行父类的speak()方法
s.speak("你好!"); }
}任务实施Java程序设计任务描述:员工分为普通员工、售货员、部门经理三种角色;所有的员工属性包括姓名、性别、年龄、部门、基本工资、地址、电话等,根据角色的不同,员工工资的计算机方式也不同,具体为:
普通员工:基本工资+岗位工资(600)+考勤(300)售货员:基本工资+岗位工资(600+销售额*0.02)+考勤(300)部门经理:基本工资+岗位工资(1000)+考勤(300)多态Java程序设计多态性是指同名的不同方法在程序中共存。即为同一个方法定义几个版本,运行时根据不同情况执行不同的版本。调用者只需使用同一个方法名,系统会根据不同情况,调用相应的不同方法,从而实现不同的功能。多态性又被称为“一个名字,多个方法”。生活中的多态:不同类型的打印机打印效果不同打印机打印黑白打印机彩色打印机打印效果为黑白打印效果为彩色多态的概念Java程序设计
多态是指把类中具有相似功能的不同方法使用同一个方法名来实现,从而可以使用相同的方式来调用这些具有不同功能的同名方法。简单来说就是多态是同一个行为具有多个不同表现形式或形态的能力。同一个方法可以根据上下文使用不同的定义能力,在多态中允许程序中出现重名现象。比如说在我们操作电脑的时候,同样是按下F1键这个动作,对于在Flash界面下弹出的就是AS3的帮助文档;对于Word下弹出的就是Word帮助;对于Windows下弹出的就是Windows帮助和支持。所以同一个事件发生在不同的对象上会产生不同的结果。这就是多态。多态的表现形式Java程序设计方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。也成为了静态绑定。成员覆盖:在子类中直接定义和父类相同的属性和方法,子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同。也称为动态绑定。可以看到一个类中成员方法的重载,也就是一个静态绑定,系统会在你编译的时候根据你调用的方法参数列表来动态的决定调用哪一个函数可以看到子类覆写了父类的方法,也就是一个动态绑定,系统会运行时动态的决定调用子类覆写后方法来实现多态的实现Java程序设计继承
重写(重写父类继承的方法)父类引用指向子类对象1.实现多态的三个条件:2.多态的实现:1)通过继承实现JAVA中,一个类之能有一个父类,不能多继承。一个父类可以有多个子类,而在子类里可以重写父类的方法,这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法的时候得到的结果和表现形式就不一样了,这就是多态,相同的消息(也就是调用相同的方法)会有不同的结果2)通过接口实现继承单继承一个类只能继承一个父类!接口多实现一个类可以同时实现多个接口!一个接口类型变量也可以指向其实现类的实例,这也是多态的一种表现。多态的实现Java程序设计//创建父类和子类(在Father1类文件中)publicclassFather1{publicvoidhit(){System.out.println("我是家长,可以打孩子!");}}classson1extendsFather1{publicvoidhit(){System.out.println("你凭什么打我?"); }}classson2extendsFather1{publicvoidhit(){System.out.println("我错了,不要再打我了"); }}classson3extendsFather1{publicvoidhit(){System.out.println("我跑,你打不到了"); }}//创建测试类(在Father1Test1类文件中)publicclassFather1Test{publicstaticvoidmain(String[]args){Father1s1=newson1();s1.hit();Father1s2=newson2();s2.hit();Father1s3=newson3();s3.hit(); }}//创建父类、子类、测试类(在Father1Test类文件中)publicclassFather1Test{publicstaticvoidmain(String[]args){Father1s1=newson1();s1.hit();Father1s2=newson2();s2.hit();Father1s3=newson3();s3.hit(); }}classFather1{publicvoidhit(){System.out.println("我是家长,可以打孩子!");}}classson1extendsFather1{publicvoidhit(){System.out.println("你凭什么打我?"); }}classson2extendsFather1{publicvoidhit(){System.out.println("我错了,不要再打我了"); }}classson3extendsFather1{publicvoidhit(){System.out.println("我跑,你打不到了"); }}创建了两个类文件创建了一个类文件注意:在一个类文件中可以创建多个类,但是只能有一个public类,并且类的文件名必须为public的类名。当定义main方法的时候,因为开发环境默认了一些规则,如只在与文件名同名的类中查找main方法。所以需要把main方法定义在public定义的类当中。多态的实现Java程序设计父类与子类的转换父类向子类转换(向下转型)子类向父类转换(向上转型)强制转换自动转换Animaldog=newDog()Animalanimal=newDog()Dogdog=(Dog)animal多态的实现Java程序设计父类向子类的转换publicclassDuoTaiTest{publicstaticvoidmain(String[]args){Animaldog=newDog();duoTai(dog);}//创建一个多态方法duoTai,参数为定义一个Animal类型的对象名为animalpublicstaticvoidduoTai(Animalanimal){//判断对象是否属于Animal类if(animalinstanceofAnimal){System.out.println("它是一个动物");}//判断对象是否属于Dog类if(animalinstanceofDog){System.out.println("它是一只狗");//强制将对象animal转换为Dog类型,名为dog,创建一个Dog类型的对象
Dogdog=(Dog)animal;//强制转换后可以执行子类中的特有的方法狗叫dog.bark();}//判断对象是否属于Bird类if(animalinstanceofBird){System.out.println("它是一只鸟");//强制将对象animal转换为Bird类型,名为bird,创建一个Bird类型的对象Birdbird=(Bird)animal;//强制转换后可以执行子类中的特有的方法小鸟飞bird.fly();}}}classAnimal{publicvoideat(){System.out.println("动物在吃");}}classDogextendsAnimal{publicvoidbark(){System.out.println("dog在叫");}}classBirdextendsAnimal{publicvoidfly(){System.out.println("小鸟在飞");}}提示:instanceof运算符:判断对象是否属于某个类或者接口多态的优点Java程序设计1).应用程序不必为每一个派生类(子类)编写功能调用,只需要对抽象基类进行处理即可。这一招叫“以不变应万变”,可以大大提高程序的可复用性。2).派生类的功能可以被基类的引用变量引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。。任务实施Java程序设计任务描述:员工分为普通员工、售货员、部门经理三种角色;根据角色的不同,员工工资的计算机方式也不同,具体为:
普通员工:基本工资+岗位工资(600)+考勤(300)售货员:基本工资+岗位工资(600+销售额*0.02)+考勤(300)部门经理:基本工资+岗位工资(1000)+考勤(300)针对不同的员工,最终输出不同的员工工资packageData;
importjava.util.Scanner;//创建员工多态测试类publicclassDuoTai{
publicstaticvoidmain(String[]args){Employee21e=newSaler21();e.monthsalary();Employee21e1=newManager21();e1.monthsalary();}}//创建员工类classEmployee21{StringWorkNo;Stringname;Stringsex;Stringdepartment;doubleBaseSalary=2000;doublemonthSalary;//创建类方法monthsalary()publicvoidmonthsalary(){monthSalary=BaseSalary+600+300;System.out.println("员工信息为:");System.out.println("员工工号\t员工姓名\t员工性别\t员工的部门\t员工的基本工资\t员工的工资"); System.out.println(WorkNo+"\t"+name+"\t"+sex+"\t"+department+"\t"+BaseSalary+"\t"+monthSalary); } }//创建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西南宁市二中大学区 2025-2026学年八年级下学期7月期末道德与法治试题(文字版含答案)
- 3GPP视角下IMS网络安全性的深度剖析与强化策略研究
- 25T卧式离心轧辊铸造机的创新设计与性能优化研究
- 2014年度中韩新词新语对比:社会镜像与文化折射
- 冶金熔剂用灰岩石英砂岩矿项目可行性研究报告模板-申批备案
- 医疗器械经营质量管理制度培训考核试题附答案
- 顶管施工方案非开挖电缆管道专项施工方案
- 2026护理管理制度考核试题题库及答案
- 锐器伤及职业暴露试题及答案
- 拆除垃圾处理施工方案模板
- 2026年广东省中考化学试卷(含答案及解析)
- 2026年全国保密教育线上培训考试题库(含标准答案)
- 2026广西来宾市机关事务管理中心招聘事业单位后勤服务控制数人员1人笔试备考题库及答案详解
- (必刷)山东省大数据专业高级职称(大数据应用分析专业)考点精粹必做500题-含答案
- 市政给水管网竣工资料方案
- 建设工程法律法规汇编
- DZ/T 0275.4-2015岩矿鉴定技术规范第4部分:岩石薄片鉴定
- 浙江省温州市“摇篮杯”2022-2023学年高一下学期化学竞赛试卷 含解析
- 《陆上风电场工程概算定额》NBT 31010-2019
- STEM教学设计心得体会(三篇)
- 小儿鼻炎调理课程课件
评论
0/150
提交评论