书签 分享 收藏 举报 版权申诉 / 9
上传文档赚钱

类型Java程序设计资料:单元06 类的继承.doc

  • 上传人(卖家):罗嗣辉
  • 文档编号:2047624
  • 上传时间:2022-01-21
  • 格式:DOC
  • 页数:9
  • 大小:5.51MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Java程序设计资料:单元06 类的继承.doc》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Java程序设计资料:单元06 类的继承 Java 程序设计 资料 单元 06 继承
    资源描述:

    1、单元 06 类的继承单元目标 掌握继承的概念和实现方式; 掌握 this 和 super 关键字;任务陈述任务描述公司中含有三类员工分别是雇员、行政人员和经理。由于类别不同对于三类员工分别使用类进行标示。要求雇员包含:属性有姓名和工号;行为有工作和加班。行政人员包含:属性有姓名、工号和职务;行为有工作和管理。经理包含:属性有姓名、工号、职务和部门;行为有工作和外交。使用继承技术实现公司员工的信息管理。运行结果知识准备6.1 继承继承是面向对象程序设计思想中最重要的性质, 通过继承可以有效的建立程序结构,明确类之间的关系,增强程序的扩充性和可维护性,能够使用已有的类来扩充成更复杂、功能更强大的程

    2、序,并为面向对象思想的其他特性提供前提条件。6.1.1 继承的概念面向对象程序设计中,在已有类的基础上定义新类,而不需要把已有类的内容重新书写一遍,这就叫做继承继承。已有类称为基类或父类基类或父类,在此基础上建立的新类称为派生类或子类派生类或子类。 继承关系可以描述为: 子类继承了父类或父类被子类继承。子类与父类建立继承关系后, 子类也就拥有了父类的非私有的成员属性和成员方员工继承关系程序设计员工继承关系程序设计法,同时还可以拥有自己的属性和方法。6.1.2 继承的实现继承的英文翻译为 inherit,但是由继承定义可以看出子类实际上是扩展了父类,因此 Java 中继承是通过关键字“exten

    3、ds”来实现的。关键字“extends”说明要构建一个新类而新类是从一个已经存在的类中衍生出来的。格式如下:修饰符修饰符class子类名子类名extends 父类父类【实例 2-11】使用继承思想实现汽车类,以及公交车和卡车类。public class Car /定义父类public String bound;/汽车牌子public int count;/汽车载人数public void showInfo()/显示汽车基本信息System.out.print(车的牌子是:+bound+;车载人数:+count);public class Bus extends Car/Car的子类Buspub

    4、lic String number;/子类自己属性-几路公交车protected void showStation(String station)/子类自己方法-报站名System.out.println(你到+station);public class Truck extends Car/Car的子类Truckpublic double weight;/子类自己属性-载重public void loading(String things)/子类自己的方法-装货System.out.println(车里装+things);本例中主要描述了关于汽车的继承关系。其中Bus和Truck分别代表公交车

    5、和货车 (实体) , 它们都是一种汽车Car (概念) 。 因此Car作为了父类, Bus和Truck分别是由Car派生出来的子类。注解:1. Java只允许单继承,而不允许多重继承,也就是说一个子类只能有一个父类;员工继承关系程序设计2. 如果子类继承了父类,则子类自动具有父类的全部非私有的数据成员(数据结构)和成员方法(功能);3. 子类可以定义自己的数据成员和成员函数,同时也可以修改父类的数据成员或重写父类的方法;4.Java中却允许多层继承。例如,子类A可以有父类B,父类B同样也可以再拥有父类C。因此子类都是“相对”的;5. 在 Java 中, Object 类为特殊超类或基类, 所有

    6、的类都直接或间接地继承Object。【经 验】我们可以看出父类都是概念性的类别词汇,例如:汽车、电灯、风扇。而汽车又可分为公交车、货车等;电灯又分为台灯、日光灯、彩灯等;风扇又可分为吊扇、台扇等。Java 是面向对象程序设计语言,来形容实际存在的实体对象,所以编程前对程序需求分析应从对象入手,总结多个对象之间的相同点和不同点, 把相同点抽象出来组成一个概念性的父类,把不同点作为子类自己独有的性质。因此通常情况父类是没有实例化的必要。6.2 方法的覆盖当子类继承父类,而子类中方法与父类中方法的名称、返回类型及参数都完全一致时,就称子类中的方法覆盖了父类中的方法,有时也称为方法的“重写” 。【 实

    7、 例 2-12 】 父 类 workman 中 有 一 个 print 方 法 , 使 用 一个 子 类Managerwork 来继承 workman 并重写父类的 print 方法。public class workman String name;int salary;public void print() System.out.println(姓名: + name + 薪水 + salary);public class Managerwork extends workman String department;public void print() System.out.println(姓

    8、名: + name + 薪水 + salary + 部门 +department);员工继承关系程序设计该实例的子类继承了父类的方法 print,而自己也写了一个 print 方法,从继承的概念上讲子类应该拥有 2 个 print 方法,但实际上在使用子类对象调用方法时,调用的是子类写的 print 方法,同时也就相当于掩盖了父类的方法。6.3 this 和 super 关键字6.3.1 this 关键字this 有两种用法:第一种用法中,this 代表它所在类的实例化对象。可以理解为是类对象的一个简单引用, 利用 this 可以连用当前对象的方法和变量, 特别是当方法名和变量名很长时,这种调

    9、用更加有意义。第二种用法,解决成员变量和局部变量重名的问题。第三种用法,在同一个类中不同构造方法之间的调用需要使用 this。【实例 2-13】this 关键字的三种用法举例。public class ThisEx public String name;public int age;public ThisEx(String name) this.name=name;/参数中的变量名name和属性中的名字name重名public ThisEx(String name,int age ) this(name);/调用上面的public ThisEx(String name)构造方法this.age

    10、=age; /参数中的变量名age和属性中的名字age重名public void setAge(int age)this.age=age;this.aComplexMethodPresentations();/调用名字复杂的方法public void aComplexMethodPresentations()int age;age=this.age;【注【注 意】意】如果在构造方法中调用另一构造方法,则这条调用语句必须放在第一句。员工继承关系程序设计6.3.2 super 关键字super主要的功能是完成子类调用父类中的内容。Super有两种用法:第一种用法中,super表示的是所在类的直接父

    11、类对象,使用super可以调用父类的属性和方法。第二种用法,子类的构造方法中可以调用父类的构造方法。【实例 2-14】super 关键字的两种用法举例。public class Father String name;public Father()System.out.println(调用父类构造方法);public void walk()System.out.println(调用父类walk方法);public class Child extends Fatherpublic Child()super();/调用父类的构造方法System.out.println(调用子类构造方法);publi

    12、c void walk()super.walk();/调用父类的方法System.out.println(调用子类walk方法);【注【注 意】意】子类中的无参构造方法默认第一句是调用父类的无参构造方法。 使用 super 调用父类的方法实际上主要是调用被子类覆盖的方法。6.4 最终类和抽象类6.4.1 最终类Java中的final关键字可以用来修饰类、方法和局部变量,修饰过的类叫做最最终类终类,此类不能被继承。修饰过的方法叫做最终方法,此方法不能被子类复写。员工继承关系程序设计修饰过的变量实际上相当于常量, 此变量 (成员变量或局部变量) 只能赋值一次。【实例2-16】最终类错误示例程序设计

    13、。public class TestFinal public static final int TOTAL_NUMBER = 5;public int id;public TestFinal() id = +TOTAL_NUMBER;/ 非法,对final变量TOTAL_NUMBER进行二次赋值了。public static void main(String args) final TestFinal t = new TestFinal();final int i = 10;final int j;j = 20;j = 30; / 非法,对final变量进行二次赋值6.4.2 抽象类Java中

    14、存在一种类专门用来当作父类的类,这种类类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。 但是并不能直接由抽象类创建对象, 只能通过抽象类派生出新的类来创建对象。 即不能生成实例化对象的类称之即不能生成实例化对象的类称之为抽象类。为抽象类。抽象类是创建一个体现某些基本行为的类,该类可以声明抽象方法,抽象方法没有方法体,只能通过继承在子类中实现该方法。抽象类的作用实际上是一种经过优化了的组织方式, 这种组织方式使得所有的类层次分明, 简洁精练。抽象类定义规则如下: 抽象类和抽象方法都必须用abstract关键字来修饰。 抽象类不能被实例化,也就是不能用new关键字去产生对象。 抽象方

    15、法只需声明,而不需实现。 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。【实例 2-17】抽象类程序设计员工继承关系程序设计abstract class Person String name;int age;String occupation;public abstract String talk();/ 声明一抽象方法,无方法体class Student extends Person / 省略构造方法/ 复写talk()方法public String talk() return 姓名: + this.name + ,年龄: +

    16、 this.age + ,职业:+ this.occupation + !;public class Main public static void main(String args) Student s = new Student(张三, 20, 学生);System.out.println(s.talk();任务实施1实施思路员工类、行政人员类、经理类有许多相同的语句代码。在属性方面,都包含了年龄、 性别等重复的信息定义。 换个思路, 员工是一般性的概念, 在定义类时,将经理类、行政类中相同的属性和方法抽象出来,集中放在员工类中,形成一种共享的机制,经理类、行政类中只放自己特有的成员变量和

    17、成员方法,减少重复代码。这样的员工类称为父类,行政人员类、经理类称为子类。子类继承父类的非私有成员变量和成员方法。 打开 Eclipse,包中定义员工类; 在员工类中只定义共有的成员变量,定义类的构造方法,定义共有的方法; 定义行政类,经理类,只定义自己特有属性和方法,父类已有的成员变量和成员方法不再定义; 编写测试类,分别声明对象进行调用。员工继承关系程序设计2程序代码public class employee / 员工类/ 省略编号姓名工资/ 省略setXxx()、getXxx()public void Employee() / 构造函数ID = 0;this.name = ;this.s

    18、alary = 0.0;public void print()public class administration extends employee / 行政人员double fare;public administration() this.fare = 0.0;/ 省略getFare()、setFare(double fare)public void print()public class manager extends administration / 主管double bonus;public manager() this.bonus = 0.0;/ 省略getBonus()、set

    19、Bonus(double bonus)publicvoid print()public class WorkMain public static void main(String args) employee employee1 = new employee();employee1.setID(2009);员工继承关系程序设计employee1.setName(zhangsan);employee1.setSalary(3500.00);System.out.println(雇员信息:);employee1.print();administration xingzheng1 = new adm

    20、inistration();xingzheng1.setID(2010);xingzheng1.setName(lisi);xingzheng1.setSalary(4000.00);System.out.println(行政人员信息:);xingzheng1.print();manager manager1 = new manager();manager1.setID(2011);manager1.setName(wangwu);manager1.setSalary(6000.00);manager1.setBonus(2000.00);System.out.println(经理信息:);manager1.print();任务实训1.实训目的 掌握继承的概念和实现; 掌握多态的概念和实现。2.实训内容编写动物世界的继承关系代码。动物(Animal)包括山羊(Goat)和狼(Wolf) ,它们吃(eat)的行为不同,山羊吃草,狼吃肉,但走路(walk)的行为是一致的。通过继承实现以上需求,并编写 AnimalTest 测试类进行测试。员工继承关系程序设计

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Java程序设计资料:单元06 类的继承.doc
    链接地址:https://www.163wenku.com/p-2047624.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库