欢迎来到天天文库
浏览记录
ID:42166464
大小:203.50 KB
页数:28页
时间:2019-09-09
《第8章 面向对象高级特性1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、教学目的及要求理解:继承的含义。掌握:静态成员要素的使用方法;类间继承的应用;super和this关键字的使用;方法的覆盖。第8章面向对象高级特性8.1静态8.1.1静态属性8.1.2静态方法8.1.3特殊静态方法main8.1.4变量初始化的顺序8.1.5程序块第8章面向对象高级特性8.2类的继承8.2.1继承(Inheritance)的含义8.2.2继承的语法和规则8.2.3子类实例化的过程8.2.4super关键字和this关键字8.3方法的覆盖作业编程实现下列要求:定义一个人类,类中包含姓名(name)、年龄(age)、性别(sex)及配偶姓名(spou
2、seName)属性,同时具有工作(work)、休息(rest)、娱乐(amusement)及处理家务(housework)四种行为方法。定义一个继承人类的学生类,学生类将从人这一父类中继承除配偶姓名以外的三类属性,并继承除工作和处理家务以外的两类行为,同时要添加自身类特有的几类属性:所属学校(school)、所学专业(specialty)及所在年级(degree),同时还要增加几种学生的行为方法:学习(study)与考试(exam)。每次调用构造方法对学号(stuCode)做自增运算。在主类main方法中顺次创建3个学生对象并显示各个对象的信息。提示:Strin
3、g.valueOf(stuCode)将学号转换为字符串型。概述实例成员要素:也称为对象成员要素或非静态成员要素,隶属于类的某个实例对象,在对象创建后才存在,必须通过对象变量来访问。静态成员要素:被特征修饰符static声明,属于整个类,能够通过类名来直接使用,而不需引用任何类的实例对象。静态成员要素包括:静态属性、静态方法例8-1例8-28.1.1静态属性静态属性:在类加载时自动创建,并被存放在类的内存中的公共存储单元(静态存储区)中,实质上是Java程序的全局变量,描述了该类所有对象的共同属性,当创建类的实例对象时,所有对象共享同一个静态属性,而不再产生副本。
4、使用方式:类名.属性名对象名.属性名8.1.1静态属性静态属性与非静态属性的区别序号静态属性非静态属性1多个对象共享同一个属性每个对象独享一个属性2该属性隶属于类该属性隶属于每个实例3类变量实例变量4①对象.属性②类.属性对象.属性8.1.1静态属性说明静态属性在类第一次被加载到虚拟机时就分配了静态存储区,以后每次运行都不再分配空间,直到虚拟机停止。因为方法体中声明的变量为局部变量,因此不能在方法体中声明静态变量,即局部变量不允许为静态的。8.1.2静态方法静态方法:属于整个类,在类开始加载时即被调用执行。如main函数。使用方式:类名.方法名([参数列表]);
5、对象名.方法名([参数列表]);用途简化方法的使用,可以不实例化直接通过类名访问。访问静态属性8.1.2静态方法注意静态方法只能访问该类的静态成员要素,不能访问该类的实例成员要素;实例方法却可以访问该类的静态属性与静态方法。静态方法不能以任何方式引用this与super关键字。静态方法不能被子类所覆盖。例8-3例8-48.1.3特殊静态方法mainmain函数定义为静态方法的必要性:因为main是Java的入口方法,在程序一开始运行时就要被调用。Java解释器直接通过类名调用main,而不是通过实例化对象来调用,这样不仅减少程序执行,也提高了效率。main函数的
6、格式:publicstaticviodmain(String[]args){}8.1.4变量初始化的顺序举例:例8-5注意:静态属性优于非静态属性的赋值。8.1.5程序块程序块分为静态块和非静态块,静态属性的赋值集中在静态块中,非静态属性的值集中在非静态块中。静态块只执行一次,非静态块可执行多次。格式:static{属性1=值;属性2=值;……}例8-6继承思想的来源:同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。一般类和特殊类一般类,也称通用类或父类,是运用抽象的原则舍弃对象的特殊性,抽取其共性而得到适应于一组对象的类。特殊类:也称具体类或子类,相
7、对于一般类而言具有特殊性的类。8.2.1继承(Inheritance)的含义8.2.1继承(Inheritance)的含义在Java中,子类继承父类实质上就是子类具有父类的所有非私有特征(即包含父类中的所有非私有属性和方法),但同时具有自己的特征(即在父类的基础上增加了自己独有的属性和方法)。使用继承的好处:很好地解决了软件复用,通过增强一致性来减少模块的接口和界面,大大增加程序的易维护性。1、语法格式[修饰符]class<子类类名>extends<父类类名>{……//类体定义}关键字extends指定声明的子类需要继承父类的某些属性和方法。如果定义中没有给出e
8、xtends<父类类名>
此文档下载收益归作者所有