版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章面向对象程序设计基础主要内容4.1面向对象的基本概念4.2类的定义4.3类和对象的使用4.4包package4.5成员变量及方法的访问权限4.6final、this及其它4.1面向对象编程的概念面向对象程序设计基本思想:将数据以及对于这些数据的操作,封装在一个单独的数据结构中。所有的对象都同时拥有属性以及与这些属性相关的行为。对象之间的联系是通过消息来实现的。基本概念:类、对象、封装、继承、消息……三大特点封装、继承、多态4.1面向对象编程的概念1)封装封装就是把对象的属性和和对这些属性的操作封装在一个单独的数据结构中,并尽可能隐蔽对象的内部细节,包含两个含义:把对象的全部属性和对属性的全部操作结合在一起,形成一个不可分割的独立单元(即对象)。信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。4.1.1面向对象编程的概念2)继承继承是一种由已有的类创建新类的机制.利用继承,我们可以先创建一个拥有共有属性的一般类,根据该一般类再创建具有特殊属性的新类。新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类或超类。Java不支持多重继承,子类只能有一个父类。4.1.1面向对象编程的概念3)多态对象的多态是由封装和继承引出的面向对象程序设计语言的另一特征。多态主要体现在两个方面:方法重载时实现的静态多态和方法重写时实现的动态多态。第4章面向对象程序设计基础4.1面向对象的基本概念4.2类的定义4.3类和对象的使用4.4包package4.5成员变量及方法的访问权限4.6final、this及其它4.2类的定义4.2.1类声明4.2.2类体4.2.3实例化对象4.2.4构造方法说明4.2.5对象的清除4.2.6方法重载4.2.1类声明类声明的格式如下:
[修饰符]class类名[extends父类名][implements接口名列表]{……}修饰符可能的选项有:[public][abstract|final]
public(公共):public修饰的类能被所有的类访问。
abstract(抽象):abstract修饰的类不能被实例化,它包含有未实现的方法。
final(最终):final修饰的类不能被继承,即不能有子类。注意:abstract和final不能同时作为一个类的修饰符。
当一个类有多个修饰符时,这些修饰符无先后顺序之分。4.2.1类声明extends(继承):
extends保留字用来表明新创建的类继承哪个类,被继承的类称为此类的父类。extends后面只能跟一个父类名。implements(实现):用来表明这个类实现了哪些接口,接口名可以有多个。
例如:下面的类是合法的:classMyClass{//空类,没有任何用处,但是合法
}又如:下面的Rectangle类继承了Shapes父类,实现了接口Display,是一个公共类。publicclassRectangle
extendsShapesimplementDisplay{……//类体}4.2.2类体类体中定义了该类所有的成员变量和该类所支持的方法,其格式说明如下:{[成员变量说明][成员方法说明]}4.2.2类体1.成员变量说明
成员变量又称值域。成员变量定义在类中,是类成员的一部分,整个类都可以访问它。Java中成员变量说明形式如下:[修饰符]成员变量类型成员变量名列表;例如:privateintnumber;成员变量的修饰符有以下几种:缺省访问修饰符、public、protected、private、final、static、transient和volatile。关于这些修饰符的含义以后将讲到。4.2.2类体2.成员变量使用(1)类的成员变量在定义它的类内部,可以直接通过成员变量名来访问。类成员变量类变量(用static修饰)实例变量(2)从类的外部访问,类变量和实例变量的使用方法是不同。访问类变量的格式:类名.类变量名访问实例变量的格式如下:对象名.实例变量名
classCircle{staticfinalfloatPI=3.1415926f;//常量
privatePointcenter;//privatefloatradius;//实例变量
staticColorcolor;//类变量
publicfloatarea;floatgetArea(){//实例方法
area=radius*radius*PI;returnarea;//内部访问成员变量
}}访问:Circlec1=newCircle();//c1是对象名System.out.println(“area=”+c1.area);System.out.println(“Color=”+Circle.color);
4.2.2类体3、成员方法说明Java通过类的方法,改变对象的状态。方法说明分为方法首部说明和方法体两部分。方法首部说明的格式如下:[方法修饰符]返回值类型方法名([形参列表])[throws异常列表]
方法修饰符可能的选项有:[public|protected|private][static][final|abstract][native][synchronized]4.方法体方法体是实现这个方法的代码段,它由“{”和“}”括起来的语句序列构成。4.2.2类体5.方法的调用成员方法又分为类方法(静态方法)和对象方法(实例方法)两类。类方法调用形式如下:
类名.类方法名(实参列表)对象方法调用形式如下:对象名.对象方法名(实参列表)4.2.3实例化对象通过声明和定义类,只是给出了创建对象的模板.当使用一个类创建了一个对象时,我们也说我们给出了这个类的一个实例。通常的格式为:TypeobjectName=newType([parameterList]);创建一个对象包括对象的声明、为对象分配内存空间和赋初值三个步骤。1、对象的声明格式为:类的名字对象名字2、为声明的对象分配内存.使用new运算符和类的构造方法为声明的对象分配内存3、执行构造方法,进行初始化。4.2.3实例化对象【例4-1】下面的例子将建立雇员信息类EmpInfo,并实例化对象,然后打印出若干信息。//EmpInfo.javapublicclassEmpInfo{Stringname;//雇员的姓名
Stringdesignation;//雇员的职务
Stringdepartment;//雇员的部门
voidprint(){//成员方法
System.out.println(name+"is"+designation+"at"+department);}
4.2.3实例化对象
publicstaticvoidmain(Stringargs[]){EmpInfoemployee=newEmpInfo();//创建对象并实例化
="RobertJavaman";//给成员变量赋值
employee.designation="Manager";//给成员变量赋值
employee.department="CoffeeShop";//给成员变量赋值
employee.print();//调用方法print()}}运行结果如下:RobertJavamanisManageratCoffeeShop4.2.4构造方法每当由类构造对象时都要调用该类特定的构造方法,在Java中,每个类都至少有一个构造方法。构造方法可以确保用户正确地构造类的对象,同时,构造方法也会对对象作初始化工作。构造方法说明形式如下:
[构造方法修饰符]方法名([形式参数列表])
[throws异常列表]{方法体}构造方法修饰符与一般方法修饰符相同一个类的构造方法可以有多个,它们都具有相同的方法名,即类名。编译器根据参数的类型来决定调用哪个构造方法。这就是构造方法的多态。4.2.4构造方法构造方法分为:缺省的构造方法、带参数的构造方法。
(1)缺省的构造方法如果类的定义没有编写构造方法,Java语言会自动为用户提供。这个由Java自动提供的构造方法就是所谓的缺省构造方法。缺省的构造方法确保每个Java类都至少有一个构造方法,该方法应符合方法的定义。(2)带参数的构造方法带有参数的构造方法能够实现这样的功能:当构造一个新对象时,类构造方法可以按需要将一些指定的参数传递给对象的变量。4.2.5对象的清除通过垃圾收集器周期性地释放无用对象所使用的内存,完成对象的清除。垃圾收集器作为一个线程运行,当系统的内存用尽或程序中调用System.gc()要求进行垃圾收集时,垃圾收集线程与系统同步运行,否则垃圾收集器在系统空闲时异步地执行。在对象作为垃圾被收集器释放前,Java运行时系统会自动调用对象的方法finialize()。protectedvoidfinalize()throwsThrowable{//撤销对象}finalize()方法是类java.lang.Object中最基本的方法。4.2.6方法重载
方法重载(MethodOverloading)就是一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同:即或者是参数的个数不同,或者是参数的类型不同。从另外的含义上来讲,重载也可以看成是同一个方法具有不同的版本,每个版本之间在参数特征和返回值方面有差别。重载是Java实现多态性的一种方式。当调用一个重载方法时,JVM自动根据当前对方法的调用形式在类的定义中匹配形式符合的成员方法,匹配成功后,执行参数类型、数量均相同的成员方法。方法重载在Java的API类库中得到大量的使用。第4章面向对象程序设计基础4.1面向对象的基本概念4.2类的定义4.3类和对象的使用4.4包package4.5成员变量及方法的访问权限4.6final、this及其它4.4包package4.4.1package语句4.4.2import语句4.4.3编译和运行包4.4包package由于Java编译器为每个类生成一个字节码文件,且文件名与类名相同,因此同名的类有可能发生冲突。为了解决这一问题,Java提供包来管理类名空间。包实际上提供了一种命名机制和可见性限制机制。package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指定为无名包)。Java系统必须支持至少一个无名包(缺省包),一般为当前目录。在开发小的或者临时的应用程序或者刚刚开始开发时,用无名包是非常方便的。4.4.1package语句package语句的格式为:packagepkg1[.pkg2[.pkg3…]];Java编译器把包对应于文件系统的目录。例如:名为myPackage的包中,所有类文件都将存储在目录myPackage下。同时,package语句中,用“.”来指明目录的层次,例如:
packagejava.awt.image;
package;packagemyPackage;4.4.2import语句
为了能使用Java中已提供的类,我们需要用import语句来引入所需要的类。其格式为
importpackage1[.package2…].(classname|*);import语句其中package1[.package2…]表明包的层次,与package语句相同,它对应于文件目录,classname则指明所要引入的类,如果要从一个包中引入多个类,则可以用星号(*)来代替。例如:
importjava.util.Date;
importjava.util.*;
importjavax.swing.event.*;4.4.3编译和运行包在JDK中编译以下程序:packagep1; publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){ System.out.println(“HelloWorld!”);}}4.4.3编译和运行包带包编译:javac–d.HelloWorldApp.java带包运行:javap1.HelloWorldApp第4章面向对象程序设计基础4.1面向对象的基本概念4.2类的定义4.3类和对象的使用4.4包package4.5成员变量及方法的访问权限4.6final、this及其它4.5成员变量及方法的访问权限
在Java中,对于成员变量和成员方法可以选择四种访问方式:public、private、protected和缺省.4.5成员变量及方法的访问权限公共类型(public)如果声明一个成员变量或成员方法的访问类型为public,则位于不同包中的类都可以访问公共类型的成员变量。保护类型(protected)声明为protected访问类型的成员变量或成员方法,只能够被该类内部、子类和相同包中的类访问。缺省类型如果成员变量或成员方法为缺省类型,则能够被该类内部和相同包中的类访问。私有类型(private)如果一个变量或成员声明为私有类型,则该变量或方法只能在同一类中被访问。第4章面向对象程序设计基础4.1面向对象的基本概念4.2类的定义4.3类和对象的使用4.4包package4.5成员变量及方法的访问权限4.6final、this及其它4.6final、this及其它4.6.1final关键字4.6.2this、super、null关键字4.6.5java.lang.Object类4.6.4JAR文件的使用4.6.1final关键字1)final修饰成员变量如果一个成员变量前面有final修饰,那么这个成员变量就变成了常量,一经赋值,就不允许在程序的其他地方修改。2)final修饰方法方法的final修饰符表明方法不能被子类覆盖。带有final修饰符的方法称为最终方法。3)final类final类不能被继承。4.6.2this、super、null关键字this是用来指向当前对象或类实例的。例如:classDemothis{ inta;//成员变量
publicDemothis(inta) { this.a=a; } }super关键字指明是对父类的引用。super.variable;super.method([para_list]);super([para_list])null表示类或者变量是空,不代表任何对象或实例。4.6.3java.lang.Object类类java.lang.Object处于java开发环境的类层次的根部,其它所有的类都是直接或间接地继承了此类。该类定义了一些最基本的状态和行为。4.6.4JAR文件的使用JAR文件就是JavaArchiveFile,是Java的一种文档格式。包含了一个META-INF/MA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 众筹保险外包合同
- 健身教练外包合同
- 公司中餐外包合同
- 养殖场清洗外包合同
- 出口业务外包合同
- 前端开发外包合同
- 劳务合同外包合同
- 半风险外包合同
- 厨师服务外包合同
- 合作外包合同
- 【MOOC期末】《中国文化传承与科技创新》(北京邮电大学)中国慕课期末网课答案
- DL∕T 5210.4-2018 电力建设施工质量验收规程 第4部分:热工仪表及控制装置
- HG+20231-2014化学工业建设项目试车规范
- 2024年03月中国动物卫生与流行病学中心2024年公开招考12名工作人员笔试历年典型考题及考点研判与答案解析
- (高清版)WST 230-2024 实时荧光聚合酶链反应临床实验室应用指南
- 初中语文课外现代文阅读理解专项训练50篇
- 2023年四川省绵阳市中考化学试卷真题(含答案与解析)
- 语文说课课件全国创新杯大赛一等奖
- 第11讲-点云数据处理20191111
- 酵母RNA的提取及含量测定
- 医院科室设置及布局消防通道分布及措施概述
评论
0/150
提交评论