版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教学目的及要求,理解:继承的含义。 掌握: 静态成员要素的使用方法; 类间继承的应用; super和this关键字的使用; 方法的覆盖。,第8章 面向对象高级特性,8.1 静态 8.1.1 静态属性 8.1.2 静态方法 8.1.3 特殊静态方法main 8.1.4 变量初始化的顺序 8.1.5 程序块,第8章 面向对象高级特性,8.2 类的继承 8.2.1 继承(Inheritance)的含义 8.2.2 继承的语法和规则 8.2.3 子类实例化的过程 8.2.4 super关键字和this关键字 8.3 方法的覆盖,作业,编程实现下列要求: 定义一个人类,类中包含姓名(name)、年龄(a
2、ge)、性别(sex)及配偶姓名(spouseName)属性,同时具有工作(work)、休息(rest)、娱乐(amusement)及处理家务(housework)四种行为方法。 定义一个继承人类的学生类,学生类将从人这一父类中继承除配偶姓名以外的三类属性,并继承除工作和处理家务以外的两类行为,同时要添加自身类特有的几类属性:所属学校(school)、所学专业(specialty)及所在年级(degree),同时还要增加几种学生的行为方法:学习(study)与考试(exam)。 每次调用构造方法对学号(stuCode)做自增运算。在主类main方法中顺次创建3个学生对象并显示各个对象的信息。
3、提示:String.valueOf(stuCode)将学号转换为字符串型。,概述,实例成员要素:也称为对象成员要素或非静态成员要素,隶属于类的某个实例对象,在对象创建后才存在,必须通过对象变量来访问。 静态成员要素:被特征修饰符static声明,属于整个类,能够通过类名来直接使用,而不需引用任何类的实例对象。 静态成员要素包括:静态属性、静态方法,例8-1,例8-2,8.1.1 静态属性,静态属性:在类加载时自动创建, 并被存放在类的内存中的公共存储单元(静态存储区)中,实质上是Java程序的全局变量,描述了该类所有对象的共同属性,当创建类的实例对象时,所有对象共享同一个静态属性,而不再产生副
4、本。 使用方式: 类名. 属性名 对象名. 属性名,8.1.1 静态属性,静态属性与非静态属性的区别,8.1.1 静态属性,说明 静态属性在类第一次被加载到虚拟机时就分配了静态存储区,以后每次运行都不再分配空间,直到虚拟机停止。 因为方法体中声明的变量为局部变量,因此不能在方法体中声明静态变量,即局部变量不允许为静态的。,8.1.2 静态方法,静态方法:属于整个类,在类开始加载时即被调用执行。如main函数。 使用方式: 类名.方法名(参数列表); 对象名.方法名(参数列表); 用途 简化方法的使用,可以不实例化直接通过类名访问。 访问静态属性,8.1.2 静态方法,注意 静态方法只能访问该类
5、的静态成员要素,不能访问该类的实例成员要素; 实例方法却可以访问该类的静态属性与静态方法。 静态方法不能以任何方式引用this与super关键字。 静态方法不能被子类所覆盖。,例8-3,例8-4,8.1.3 特殊静态方法main,main函数定义为静态方法的必要性:因为main是Java的入口方法,在程序一开始运行时就要被调用。Java解释器直接通过类名调用main,而不是通过实例化对象来调用,这样不仅减少程序执行,也提高了效率。 main函数的格式: public static viod main(String args),8.1.4 变量初始化的顺序,举例:例8-5 注意:静态属性优于非静
6、态属性的赋值。,8.1.5 程序块,程序块分为静态块和非静态块,静态属性的赋值集中在静态块中,非静态属性的值集中在非静态块中。静态块只执行一次,非静态块可执行多次。 格式:static属性1=值;属性2=值;,例8-6,继承思想的来源:同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。 一般类和特殊类 一般类,也称通用类或父类,是运用抽象的原则舍弃对象的特殊性,抽取其共性而得到适应于一组对象的类。 特殊类:也称具体类或子类,相对于一般类而言具有特殊性的类。,8.2.1 继承(Inheritance)的含义,8.2.1 继承(Inheritance)的含义,在Java中,子类继承父类实质
7、上就是子类具有父类的所有非私有特征(即包含父类中的所有非私有属性和方法),但同时具有自己的特征(即在父类的基础上增加了自己独有的属性和方法)。 使用继承的好处:很好地解决了软件复用,通过增强一致性来减少模块的接口和界面,大大增加程序的易维护性。,1、语法格式,修饰符 class extends /类体定义 关键字extends指定声明的子类需要继承父类的某些属性和方法。如果定义中没有给出extends ,则声明的类自动继承java.lang.Object类。,2、规则,子类继承所有父类的非私有成员(private)作为自己的成员,同时也可以在父类的基础上增加新的属性或方法; 继承关系可以传递;
8、 Java只支持类的单一继承。即一个基类可以派生多个子类,但一个子类只能有一个直接父类。 子类可以直接访问父类中的非私有成员,也可以通过基类的公有方法来间接访问父类的私有成员。 继承不能改变基类属性与方法的访问权限,即父类的成员为public则子类继承该成员后,成员仍为public。,例8-8、例8-9,8.2.3 子类实例化的过程,子类能够继承基类的非私有成员要素,而构造方法为公共类型,因此子类能够继承基类的无参构造方法。 构造方法的执行遵循“自顶向下”的原则,即子类在实例化时总是先调用父类的无参构造函数,执行完父类的构造函数后再执行子类的构造函数。,例8-10,例8-11,1、super关
9、键字,super的作用:实现对直接父类成员要素的访问,代表对当前对象直接父类对象的引用。 super的使用格式: 访问直接父类中的成员要素: super.属性名; super.方法名(参数列表); 调用直接父类的构造方法:super(参数列表);,1、super关键字,注意 “super(参数列表);”方法是在子类中调用父类构造函数的唯一方法,试图使用“父类名(参数列表);”的形式来调用父类的构造函数是非法的。 super(参数列表)语句必须在子类构造方法中被调用,且必须为子类构造方法的第一条语句,其前面不能有其他任何语句。,2、this关键字,this的作用:实现对当前类对象成员要素的访问,代表对当前类对象的引用。 this的使用格式 访问直接父类中的成员要素: this.属性名; this.方法名(参数列表); 调用本类的其他构造方法:this(参数列表); 注意:由于this和super在调用构造函数时都要求在第一句,则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论