2024年面向对象程序设计第一部分_第1页
2024年面向对象程序设计第一部分_第2页
2024年面向对象程序设计第一部分_第3页
2024年面向对象程序设计第一部分_第4页
2024年面向对象程序设计第一部分_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章面对对象程序设计

1、类

2、对象

3、接口

4.1编程语言的几个发展阶段

机器语言如:汇编语言

过程语言如:c语言,Fortran语言等

使用面对过程语言,人们只需按着自己的意图来编写各个函数,语言的语法更接近人们的

自然语言,因此,习惯上也称过程语言是高级语言.不过,无论那种高级语言编写的源文献,计算

机都不能直接执行,因为计齐机只能直接识别,执行机器指令.因此,必须把源文献转换成机器

指令,然后计算机去执行对应的机器指令.

将高级语言编写的源程序转化成机器指令,常常使用下列两种方式:

(1)编译方式Compilation:针对目前的机器处理器芯片,将源程序所有翻译成机器指令,

称做目标程序,再将目标程序交给计算机执行.

(2)解释方式Interpretation:这种方式不产生整个的目标程序,而是依照目前的机器处理

器芯片,边翻译边执行,翻译一句执行一句.

Java语言的处理方式既不是第1种也不是第二种,Java语言的创造创造之处在于■,它不针

对特定的CPU芯片进行编译,

Java提供的编译器把源程序编译成称做字门码的一个中间代码.字行码是很接近机器

码的文献,能够在提供了Java虚拟机JVM的任何系统上被解释执行.因此Java本质上是解释

执行的程序,当字节码加载到内存之后,再由Java的解释器对字节码按上述2的解释方式执行,

即翻译一句,执行一句,不产生整个的机器代码程序,翻译过程假如不出现错误,就一直进行到

所有执行完成,否则将在错误处停止执行.同一个程序,假如是解择执行的,那么它的运行速度

一般会比被编译成可执行的机器代码的运行速度慢些.

不过,对Java来说,二者的差异不太大Java的字节码通过仔细设计,很轻易便能使用.

JIT即时编译方式编译技术将字节码直接转化成高性能的本地机器码,Sun企业在Java2发

行版中提供了这么一个字节码编译器:

—JIT(JustInTime),它是Java虚拟机的一部分.Java运行系统在提供JIT的同时

仍具备平台独立性,因而“高效且跨平台”对java来说不再矛盾.

假如把Java的源文献比做“汉语”的话,字节码就相称于“世界语",世界语不和详细

的“国家”有关,只要这个“国家”提供了“翻译“,就能够再迅速地把世界语翻译成本地语

言.

面对对象编程

伴随计算机硬件设备功效的深入提升,使得基于对象的编程成为也许.基于对象的编程

愈加符合人的思维模式,编写内程序愈加健壮和强大,更重要的是,面对对象编程激励创造性

的程序设计.

Java是面对对象语言,它的源程序是由若十个类组成,源文献是扩展名为Java的文本又

献.

因此,要学习Java编程就必须学会怎样去写类,即怎样用Java的语法去描述一类事物

共有的属性和功效.属性通过变量来刻画,功效通过措施来体现.即措施操作属性形成•定的

凫法来实现一个详细的功效.

类把数据和对数据的操作封装成一个整体.

4.2类

类是组成Java程序的基本要素.类封装了一类对象的状态和措施.类是用来定义对象的模板.

类的实现包括两部分:类申明和类体.基本格式为:

class类名

1-

类体的内容....

)

class是核心字用来定义类."class类名”是类的申明部分,类名必须是合法的Java标识符.

两个大括号以及之间的内容是类体.

4.2.1.类申明

如下是两个类申明的例子.

classPeople

{…

)

class植物

aclassPeople"和"class植物”叫做类申明"People"和“植物”分别是类名。

类命名最佳遵守下列习惯:

(1)假如类名使用拉丁字母,那么名字的首写字母使用大写字母,如Hello,Timc,Pcop!c等.

(2)类名最佳见名得意,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写。

如BeijingTime,AmericanGanie,HelloChina等.

4.2.2.类体

写类的目标是为了描述一类事物共有的属性和功效,描述过程由类体来实现.类申明之后的一

对大括号以及它们之间的内容称做类体,大括号之间的内容称做类体的内容.

类体的内容由两部分组成:

一部分是变量的定义,用来刻画属性;另一部分是措施的定义,用来刻画功效.

下面是一个类名为“梯形”的类,类体内容的变量定义部分定义了4个tloal类型的变量”

上底“,“下底”,”高“和“面积”,措施定义部分定义了两个措施”计算面积"和“修改

高”.

class梯形

(

float上底,下底,高,面积;〃变量定义部分.

float计算面积0〃措施定义

(

面枳=(上底+卜.底产高/2.0f;

return面积;

)

void修改高(floath)〃措施定义

{

高=氏

4.2.3.组员变量和局部变量

我们已经懂得类体分为两部分:.

变量定义部分所定义的变量被称为类的组员变量.

在措施体中定义的变量和措施的参数被称为局部变量.

(1)组员变量和局部变量的类型能够是Java中的任何•个数据类型,包括

基本类型:整型、浮点型、字符型,布尔型。

引用类型:数组类型和对象。

对象也称作类类型变量。

classPeople

intboy;

floata[];

voidf()

(

booleancool;

Workmanzhangboy;

classWorkman

{

doublex;Peoplezhiwei;

)

People类的组员变量a是浮点数组型变量,cool是局部量,zhangboy是类类型(对象)局

部变量,类Workman中的zhiwei是类类型变量,即对象.

classSun

(

intdistance;

intfind()

(

inta=12;

distance=a:〃合法,disiance在整个类内有效.

retunidistance;

}

voidg()

(

inty;

y=a:〃非法.因为a以失效.而措施g内又没有定义变量a

(2)组员变量在整个类内都有效,局部变量只在定义它的措施内有效.

组员变量与它在类体中书写的先后位置无关,例如,前述的梯形类也能够写成:

class梯形

float上底,面积;〃组员变量的定义.

floal计算面积()

(

面积=(上底+下底产高/2.0f;

return面积;

)

float下底;〃组员变量的定义.

void修改高(floath)〃措施定义.

{

高玉

)

float高;〃组员变量的定义.

注意:

但不倡导把组员变量的定义分散地写在措施之间或类体的最后,人们习惯先简介属性再简介

功效.

(3)组员变量又分为实例组员变量(筒称实例变量)和类组员变量(筒称类变量)

例如:

classdog

(

floatx;

staticinty;

其中x是实例变量,而y是类变量.假如组员变量的类型前面加上核心字sialic,这么的组

员变量称做是类变量或静态组员变量.再学习过对象之后,就会懂得实例变量和类变量的区

分.

(4)假如局部变量的名字与组员变量的名字相同,则组员变量被屏蔽,即这个组员变量在这

个措施内暂时失效.

classTom

(

intx=98,y;

voidf()

{intx=3;

y=x;

〃y得到的值是3.不是98.假如措施f中没有“intx=3;”语句,y的值将是98.

)

(5)我们已经懂得,假如局部变量的名字与组员变量的名字相同,,则组员变量被屏蔽.

这时假如想在该措施内使用组员变量,必须使用核心字this.

class三角形

floatsideA,sideB,sideC,lengthSum;

voidsctSide(floa(sidcA,floatsidcB.floatsidcC)

(

this.sideA=sideA;

ihis.sidcB=sidcB;

this.sideC=sideC;

}

)

this.sideA.this.sideB.this.sideC就分别表示组员变量sideA,sideB,sideC.

4.2.4.措施

我们已经懂得一个类的类体由两部分组成:变量的定义和措施的定义.措施的定义包括两部

分:措施申明和措施体

一般格式为:

措施申明部分

(

措施体的内容

)

(1)措施申明.

最基本的措施申明包括措施名和措施的返回类型,如:

floatarea()

{-

)

措施返回的数据的类型能够是任意的Java数据类型,当一个措施不需要返回数据时,返

EI类型必须是void.诸多的措施申明中都给出措施的参数,参数是用逗号隔开的某些变量申明.

措施的参数能够是任意的Java数据类型.

措施的名字必须符合标识符要求.在给措施起名字时应遵守良好的习惯:名字假如使用

拉丁字母,首写字母使用小写.假如由多个单词组成,从第2个单词开始的其他单词的首写字

母使用大写。

例如

floatgetTrangleArea()

voidsetCircIeRadius(doub)eradius)等.

⑵措施体

措施申明之后的•对大括号”{“,"}”以及之间的内容称做措施的措施体.措施体的内

容包括局部变量的定义和合法的Java语句。

intgetSum(intn)

{

intsum=0:

for(inti=l;i<=n;i++)

(

surn=surn+i;

returnsum;

措施参数在整个措施内有效,措施内定义的局部变量从它定义的位置之后开始有效.写一

个措施和C语言中写一个函数完全类似,只不过在这里称做措施罢了.局部变量的名字必须

符合标识符要求,遵守习惯名字假如使用拉丁字母,首写字母使用小写.假如由多个单词组成,

从第2个单词开始的其他单词的首写字母使用大写.

4.2.5.措施重载

措施重载是指一个类中能够有多个措施具备相同的名字,但这些措施的参数必须不一样,即或

者是参数的个数不一样,或者是参数的类型不一样.下面的Area类中gctArea措施是一个重

载措施.

(I).怎样创建对象

Objectobj=ncwObjcctO

Object表示的要创建的对象的类型

obj表示的是创建的对象的名称

new是创建对象的核心字

Object)是创建对象所使用的结构措施

(2).假如是用Objectobj表示申明一个对象不过并没有为该对象分派内存空间。

什么是结构措施:结构措施是一个特殊措施,它的名字必须与它所在的类的名字完全相同,并

且不返回任何数据类型

(3).结构措施是创建对象的时候调用的。

(4).每一个类都有一个默认的结构措施(使用javap命令来椅杳一个.class文献的结构)

格式为:

publicpackagename.ClassName()即共有的无参的

例如:publicStudent(){

)

(5).假如我们在•个类中定义了一个有参数的结构措施那么默认的结构措施就不存在了。

(6)假如创处了一个对象,并旦类中申明的属性没有初始值那么java会为其分派默认值:

对于引用类型为null(空的)

对于基本数据类型int为0、float为0.0、boolean为false>char为空字符。

(7).在一个类中能够有多个结构措施,那么这些措施的参数必须不一样(个数不一样,类

型不一样,与参数名字无任何关系)

措施重教:措施重载是指•个类中能够有多个措施具备相同的名字,但这些措施的参数必须

不一样,即或者是参数的个数不一样,或者是参数的类型不一样.

措施重裁示例:

classArea

{

floatgetArea(floatr)

{

return3.14f*r*r:

)

doublegetArea(floatx,inty)

returnx*y

floatgetArea(intx,floaty)

(

returnx*y;

)

doublegetArea(floatx,floaty,floatz)

(

return(x*x+y*y+z*z)t:2.0;

注:措施的返回类型和参数的名字不参加比较,也就是说假如两个措施的名字相同,虽然类型

不一样,也必须确保参数不一样.派※※

4.2.6.结构措施

结构措施是一个特殊措施,它的名字必须与它所在的类的名字完全相同,并且不返回任何数据

类型.

class梯形

(

float上底,下底,高;

梯形()

(

上底=60;

下底=100;

高=20;

}

梯形(floatx,inty,floath)

(

上底=x;

下底=y;

i^=h;

4.2.7.类措施和实例措施

我们已经懂得,组员变量可分为实例变量和类变量.同样,

类中的措施也可分为实例措施和类措施,如

classA

(

inta:

floatmax(floatx,floaty)

staticfloatjerry()

类A中的措施jerry和speak是类措施,max是实例措施,即措施申明时,措施类型前面不加核

心字static的是实例措施,加static的是类措施.注意static需放在措施的类型的前面.

4.2.8.两个值得注意的问题

(1)对组员变量的操作只能放在措施中,措施能够对组员变量和措施体中自己定义的局部变

量进行操作.在定义类的组员变量时能够同时赋予初值,如:

classA

{

inta=12;

floatb=12.56f;

)

不过不能够这么做

classA

(

inta;

floatb;

//a=12;非法,只能放在措施中

//b=12.56f;非法

)

但需要注意的是,实例措施既能对类变量操作也能对实例变量操作,而类措施只能对类变量

进行操作.如:

classA

(

inta;

staticintb;

voidf(intx,inty)

(

//a=x;合法.

〃b=y;合法.

)

staticvoidg(intz)

{

〃b=23;合法.

//a=z;非法.

(2)•个类中的措施能够相互调用,实例措施能够调用该类中的其他措施:类中的类措施只

能调用该类的类措施,不能调用实例措施.

4.3对象

我们已经说过类是创建对象的模板.当使用一个类创建了一个对象吐我们也说我们给出了这

个类的一个实例。

4.3.1,创建对象

创建一个对象包括对象的申明和为对象分派内存两个步骤.

(1)、对象的申明.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论