java语言程序设计_第1页
java语言程序设计_第2页
java语言程序设计_第3页
java语言程序设计_第4页
java语言程序设计_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

X

Java

JIMMktmytUrm

Java语言程序设计

i

第三章Java语言面句对象的特征

JAVA

1.茹向对象的寒中概念

2.类的定义

3.对象

4.类的健疑和多态

5.接口和包

6.多用工具类

2

基本概念

■编程语言

■人和计事机进行袤流的工具和手段

■编程语言的发展

■机器语言:0101001

■汇褊语言:mov,push,add,call

■第三代语言:裔行语言川C语言,代表,过程化

褊程语言(ProceduralProgrammingLanguage)

■第四代语言:面向对象的褊程语言

3

基本概念

JAVA

■面向对象(ObjectOriented-OO)

■面向对象编程(ObjectOrientedProgramming-OOP)

■面向对象是一种软件开友的方法,“面向对象的今折

S微花"(OOA&OOD)

■第一个面向对象的语言:Simula-67

■第一个鼠功的面向对象偏隹语言:Smalltalk

■C++,JAVA,C#,PERL等

1.用客观世界中描述事物的方法来描述程本中要解决的

问奥

2.程星便是鼠堆的对象,彼此逋述漪息的传递,请求其

他对象进行工作

4

基本概念

JAVA

■五个基存梳念

1.对象

2.类

3.武装桃

4.健示辘

5.多态桃

5

基本概念&

________________JAVA

1.对象(object)

■对象是对客现世界中实体的腆射。

■everythingisanobject

■现实世界的对象:桌3、札自行率、电视、

文件、表格、按钮、窗口

■对象的两个特”上

■收态:猾对象本身的信息(内部信息/内部变量)

■行名:实现对信息的访问/对象的糅作

■对彖的标志:用山区合系同对象的标拥符

■例,山地车的波态(两个率给、一也齿给,速盛、按熟),

行,(利车、加速、减速和换排)

6

基本概念&

_______________JAVA

1.对象(object)

■技态少变量(variables)

■行,少方法(method)

■对象就是变量和相关方法的软件集合

■一个对象可。由其他对象组合而鼠,窗口(按钮,

案隼条,次埼相,技态核号)

■程洋就是对象的集合,对象之间相亘袤呈初遍

信完鼠G务

■搭积木

7

基本概念&

_______________JAVA

2.类(class)

■类是对现实世界中实体的富盛抽象。

■现实世界中,方位很多同类的对象,很多意3、

不、自行率,率,计兵机。

■一种原型,一种抽象,一种共桃,一个模板

■每一个对象都属于一个类。

■实例(instance),某类对象的一个特定实体,类

是对象的一个抽象。

■Java语言中,类是一种自定文的微据类型,也

称名类类型。

8

基本概念&

__________________________________JAVA

3.封装^

■封装桃播粉描述某种实体的微据也基于送的微据

的据作集合到一M,。便彬鼠一个封装体,即类。

■羽膝使对象存身的微据得到保护/德藏,其他对

塞依命盘的迷W孩对象的扬向方法(接口

/interface)即可。

■封装的优点

■模块化--每个对象的源次件可。是和或独贪的,可。

被系同的程序碉用。每个对彖像一块积木,可。搭建

系同的形吠

■信息德藏一直帝定又一个公共接口/方法实现对对象

的彷冏,可。调整对象的松嗡信息和方法,而系会对

其他碉用它的对象产皮影响

■提富可专用嘏

9

基本概念

JAVA

4.穗族桃

■,什么会有徒系7

■建克一个类后,夜现另一个新的类[相同的特槌,

两个迄落:童新定义一个新的类;在已1类的基砒

上,修改(槽/减)

■父类和3类,3类健豕(物有)父类所有的微据

和方法,同时3类可。有新的微据和方法

■箱型辂构(层次化修构)

■根(基类)

10

基本概念

JAVA

4.穗族桃

U

基本概念

JAVA

4.穗族桃

■多童健家

12

基本概念

JAVA

5.多态桃

■多态桃播一个程本中同名的系同方法於府的情

况kO

■表现在用一个类中少方法的唾武

■点同一个类中,相同的方法名对应房系同的方法实

现。

■表现在健豕中少方法的唾与

■在3类中对健示的父类的方法壹新定文

■方法名相同,便对应的方法实现系同

13

基本概念

JAVA

5.多态桃

■多态桃农健示中的表现

14

第三章面向对象特征

1.基律梳念

2.类的定义

3.对象

4.类的健疑和多态

5.接口和包

6.多用工具类

类的定义意

________________JAVA

■程格是对象的集合,而对象是类的实例化

■源程本就是一个个的Java类

■Java洋身梃供的类(核MAP工)

■Java文福中描述

■程本员可。对其进行倜用

■j2sdkl.4.1_01\jre\lib\rt.jar

■程詹员自己定义的类

16

类的定义意

________________JAVA

■类的文义格式

[类的修饰符]class类名[extends父类名]implements[接口名]

{

类型裁员变量1;

类型鼠员变量2;

类型裁员方法1(参熟1,[参熟2,...]){

方法体;

}

类型戚员方法2(参照1,[参敏2,…]){

方法体;

}

}17

类的描述>

________________JAVA

■类的定义格式

[类的修饰符]class类名[extends父类名][implements接口名]{

■类的修饰符

■public:公共类,可。被其他类所使用。Java语言规定,

程序中:类必须是公共类。

■无修饰/默欣说明:被类兄犍被同一个包中的其他类所

使用,系犍被其它包中的类所访问。

■abstract:抽象类,核类没嗡具体对象,系犍被实例化。

通有抽象类是它的所13类的公共属槌的集合。

■final:核类系犍嗡3类。此类的特支是用来党我某种标

瘠功惚。

■final和abstract旅犍用来同时修饰一个类。

18

类的描述

JAVA

■类的修佛苻

finalclassChessAlgorithm{

classBetterChessAlgorithmextendsChessAlgorithm{

Can'tsubclassfinalclasses:classChessAlgorithm

classBetterChessAlgorithmextendsChessAlgorithm{

A

1error

19

类的描述

JAVA

■类的定义辂式

[类的修饰符]class类名[extends父类名][implements接口名]{

}

■extends:健系的关系

■implements:实现接口(interface)的方法,用。

实现多重徒示

publicclassTestextendsFrame

implementsActionListener,ItemListener{

20

类的描述

JAVA

■一个简单的^(Exam3_l.java)

classStudent{

Stringname,stuNumber;

doublescorel,score2,score3;

voidsetl(Stringsi,Strings2){

name=si;stuNumber=s2;

System.out.println(name+''''+stuNumber);

)

doublesetScore(doubledl,doubled2,doubled3){

doubled;

score1=dl;

score2=d2;

score3=d3;

d=dl+d2+d3;

returnd;

)

)

21

类成员-变量和方法乏

________________JAVA

■对象具市状态和行,

■戚员变量定义

[扬冏权限修饰符]类型变量名;

[访问权限修饰符]类型变量名[二初值];

[访问权限修饰符]类型变量名[二初值][,变量名[=

初值]…];

■我员方法定义

[访问权限修饰符]方法返回类型方法名([<参鼎表")[throws

异帝名列表]{

方法体;

}

■类型:基域类型,复合类型(熬殂、类伞接口)

22

类成员变量的访问及

________________JAVA

■扬冏控制修饰符

■公共访向控制符一public

■公共变量,可被所喷类侍间

■默弘访问按刷符

■被同一包中其他类访问

■松嗡访问控制符一private

■仅可被接奏◎身访问,G何其它类(包括孩类的3类J都系可

访问。

■保护访间控制符一protected

■祓类匈身、同一个包中的其他类、其他包中接类的各奏扬间

■松[保护访问控制符一privateprotected

■该类自身、所13类访间

23

类成员变量的访问及

_______________________JAVA

■张访问按制修饰将

■静态变量static

■属于类的变量,系属于某个对象。

■景性变量final(即符号有量)

■他在程序的执行过隹中系会改变

■说明格式;卜修饰符)]final〈类型>〈变量名>二《初值》

■易失变量volatile

■可犍同时被多个俵程所控制介修改。

24

类成员的访问

TAX7^

----------------packageabc;

■public(公共变量/公共与dassA{

允许全权何冏,无住何限・publicintx;

publicvoidprint(){...}

classA{

publicintx;

publicvoidprint(){...}packagexyz;

importabc.A;

classB{classB{

voidtest(){voidtest(){

Aa=newA();Aa=newA();

a.x=100;a.x=100;

a.print();a.printQ;

直接访问公有变量X

和公共方法print。

类成员的访问

JAVA

■private(松市变量/松帝方法)

■仅犍在其所定义的类中被访同(先构苴对彖,苒访间)

classA{D:\>javacA.java

privateintx;xhasprivateaccessinA

privatevoidprint(){...}a.x=100;

)A

classB{print()hasprivateaccessinA

voidtest(){a.print();

A

Aa=newA();

2errors

a.x=100;

a.print();

26

D:\>javacB.java

类成员的numberhasprivateaccessinsub.A

System.out.printin("result="+A.number);

■protecteeA

■容许类存1errors

对象,苒茄冏)protectedstaticintnumber=l;

classA{

protectedintx;

protectedvoidprint(){...}importsub.A;

publicclassB{

classB{publicstaticvoid

voidtest(){main(Stringars[])

Aa=newA();{System.out.println(uresult=u

a.x=100;+A.number);

a.print();

类成员的访问

JAVA

■无修饰(左胳变量/左腾packageabe;

■容许类洋身。及同一个包classA{

classA{intx;

intx;voidprint(){...}

voidprint(){...})

)packageabc;

classB{classB{

voidtest(){voidtest(){

Aa=newA();Aa=newA();

a.x=100;a.x=100;

a.print();a.printQ;

)

)

28

类成员变量的访问

JAVA

■小转

名称扬问权修饰符类洋身各类包所有类

公於public1

1

钦认一一一

保护protected1

松1private1

29

类成员变量

JAVA

■Static(静态变量/静态方法)

■类的变量/方法,独贪手类的对象,可△直接

根据类名倜用

classS{

staticintA=12,B=34;

staticvoidprint(){...}

classTest{

publicstaticvoidmain(Stringargs[]){

System.out.printlnC'A=u+S.A+''B="+S.B);

S.print();

30

类成员变量

JAVA

■final变量/方法

■final变量:定又一个多鼎,即变量值系犍改变

finaldoublePI=3.1415926;

■final类:系惋嗡3类

■final方法:方法系犍被专写(overriding)

classChessAlgorithm{

finalvoidnextMove(ChessPiecepieceMoved,

BoardLocationnewLocation){

31

类成员方法乏

________________JAVA

■方法:对象布■,的描述

■党鼠某种功怩的程本块

■定义:

[扬冏权限修饰符]方法返回类型方法名(参数表)[throws异有名]{

方法体;

}

■方法参鼎的传递

■方法的变载(overloading)/变与(overriding)

■狗透方法

32

类成员方法的访问乏

JAVA

■访问控制修饰将

■公共扬冏控制符一public

■被所】类访问

■默欣扬同控制符

■被同一包中其他类扬向

■松帝扬间控制符一private

■被被类自身访冏

■保护彳方冏控制符一protected

■该类自身、同一个包中的其他类、其他包中的3类

何同

■松帝保护彳方向控制符一privateprotected

■被类自身、所13类扬冏

33

类成员方法的访问

■琳访间控制修将

■静态方法static

■属于类的方法

■獴珞方法final

■系犍薇3类壹新定义的方法

■抽象方法abstract

■兄畴方法说明,汶】具体实现

■冷池方法native

■。其他语言实现方法功惚

■同步方法synchronized

■用于多俵程程序中的例碉命同步

成员方法

JAVA

■例

classArea{classTest{

doublewidth,height;publicstaticvoidmain(String

voidsetV(doublew,args[]){

doubleh){doubled_product;

width=w;AreamyArea;

height=h;myArea=newArea();

)myArea.setV(4,5);

d_product=myArea.product();

doubleproduct(){System.out.printlnCmyArea的面

积是:"+d_product);

returnwidth*height;

JJ

成员方法&

_______________________JAVA

■方法参熬的传递

■方法参数,基存类型时,参微传遢的是变量依,

系怩改变碉用方法中的参微他。

■方法参数,复合类型(例数殂令对象),参照

传递的是数殂或对象的池征他,对参数的改变

会影响原来的他。

■例Exam3_3.java,参微,数组。

■例Exam3_4.java,参微,对象。

36

成员方法

JAVA

■方法的重载(overloading)

■方法名相同,但方法的参微系同

方法描述方法名参熟类型方法返命值

施对他abs(a)intint

施对他abs(a)longlong

施对他abs(a)floatfloat

施对他abs(a)doubledouble

publicstaticintabs(inta)

publicstaticlongabs(longa)

publicstaticfloatabs(floata)

publicstaticdoubleabs(doublea)37

成员方法

JAVA

■变战方法的逡落

通帝京编年时进竹。系疣根据系同的参

剧类型、个剧或顺本,寻我獴佐匹配方

法。匹配原则电下;

(1)完全匹配,景佐方案,

(2)系犍完小区配时,尽量逡落类型箝换

代价景小的一种方案进行匹配。

例Exam3_5。

38

成员方法

JAVA

■方法的专写(overriding)

■3类唾写父类的方法

classFather{classSonextendsFather{

■■■■■■■■■■■■

voiddisplay(){voiddisplayQ{

Fatherf=newFather();Sons=newSon();

f.display();s.display();

39

构造方法堂

________________JAVA

■构造方法是一种特殊的方法,功怩是对创建的对

象进行初胎化。

■创建对象/实例化对象一new

方法1:Applea二newApple。;(创建对象)

方法2:Applea;(对象的说朗)

a=newApple();(实例化对象)

1.对象的实例化逾过构造方法(constructor)来实现

2.构造方法的名庄鸟类名相同

3.构造方法没有返®他

4.系疫匈劭碉用构造方法

5.构造方法可。嗡多个,构鼠方法的童战(overload)

40

构造方法

JAVA

■例:对象的实例化和初胎化

classQangle{classTest{

inta,h;publicstaticvoidmain(Stringargs[]){

Qangle(){IQangleql=newQangle();

a=10;h=20;输出结果:Qangleq2=newQangle(20,50);

)1020Qangleq3=newQangle(ql);

Qangle(intx,inty){2Q5QSystem.out.println(ql.width()"

a=x;h=y;in+ql.heightQ);

1UzuSystem.out.println(q2.width()"

)

Qangle(Qangler){+q2.height());

System.out.println(q3.width()"

a=r.widthQ;

+q3.heightQ);

h=r.height();

)

intwidth(){returna;}

intheightQ{returnh;}

)

构造方法

JAVA

■默伏构造方法

■定又类时,电累系定义G何的构造方法,系统

会自劭,残类生鼠一个熟女的构造方法。核方

法名同类名,无G何彬参,系实现G何摇作。

例classApple{

intcolor;

运行时系统自动赋予

}一个空构造函数

Applea二newApple。;如Apple(){}

42

抽象类(abstractclass)>

■使用修饰将abstract修饰的类,是一个未

党戚的类。抽象类没有具体对象。

■H有抽象类可。包含抽象方法(abstract

methods)

■抽象方法:仇仇声明了方法,但未实现

■帝扬冏修饰祠

■有返回他类型

■有方法名

■有参数列表

■无方法体

43

abstractclassPoint{

intx=1,y=1;JAVA

voidmove(intdx,intdy){

x+=dx;

y+=dy;抽象方法:有访问修饰词、

返回值类型、方法名和

参数列表,无方法体

abstractvoidalt();

■■■■■■

classSimplePointextendsPoint{

voidalt(){...}

44

抽象类(abstractclass)

JAVA

■抽象类系犍被实例化,例Pointp二new

Point()错篌;

■3类健示抽象类时,处频唾写抽象方法,

否则仍,抽象类

45

abstractclassGraphics{classCircleextendsGraphics{

abstractvoidparameter();doubler;Stringc;

Circle(doubleu,Stringv){

abstractvoidarea();

r=u;c=v;

运行结果\/nirlflarameter(){

1.02.0应用场合:不同子类可以用5tem.out.println(r+''''+c);}

2.0不同的方式实现同一共同H){

3.0Redtem.out.println(Math.PI*r*r);}

28.274333;接口,该共同接口建立了

classRecta

一个基本形式rec=newRectangle(1.0,2.0);

doublen,w;Circlecir=newCircle©。"Red。;

Rectangle(doubleu,doublev){Graphics[]g={rec,cir};

h=u;w=v;for(inti=0;i<g.length;i++){

g[i].parameter();

voidparameter(){g[i].area();

System.out.println(h+''''+w}

voidarea(){System.out.println(h*w);}

46

第三章面向对象特征

1.基域槐念

2.类的笑文

3.对象

4.类的健疑和多态

5.接口和包

6.卒用工具类

对象的定义意

________________JAVA

■又称对象攻鼠或创建

■定义珞式

■《类名x对象名表>;

■《对象名〉二new<类名〉([<实参表>]);

■两行可合并周一竹

■4类名x对象名>=new〈类名>([<实参表习);

■例,

myclassobjectlzobject2;

objectl=newmyclass();

object2=newmyclass(3.14z8.2);

48

对象成员的引用

■引用对象的变量

■格式:对象名.变量名

■引用对象的方法

■格式:对象名.方法名

■例

■Vectorv二newVector();

■v.addElement(''helloworld");

对象的使用

_______________________JAVA

■对象作,方法的参照

[访问权限修饰苻]方法返命类型方法名(参照)[throws异存名]{

方法体;

}

■方法参照的格式:类型变量名,……

■类型:基本数据类型/复合类型(对象)

■对象参照的传递

■引用倜用,传遢也祉。

50

对象的使用

JAVA

■例对象用作方法的参照

classSpot{classTest{

privateintx,y;publicstaticvoidmain(Stringargs[]){

Spot(intu,intv){Spots=newSpot(2,3);

setX(u);setY(v);}System.out.println(''s^的坐标:“

voidsetX(intxl){x=xl;}+s.getX()+'';/+s.getY());

voidsetY(intyl){y=yl;}Transts=newTransQ;

intgetX(){returnx;}ts.move(s,4,5);

intgetY(){returny;}System.out.printings点的坐标:“+

+s.getX()+''/+s.getY());

)

)

classTrans{

voidmove(Spotp,inth,intk){

p.setX(p.getX()+h);

p.setY(p.getY()+k);

)

)

对象的使用

_______________________JAVA

■对象的彳方问

■对象作,方法的返㈤他

[扬冏权限修饰符]方法返®类型方法名(参熟)[throws异存名]{

方法体;

}

■返回类型

■嗡返®他:及域微据类型/复合类型(对象)

■无返®他:void

52

对象的使用

■对象作,方法的返㈤他

■例:求两堂坐标之间的中直坐标

■思路:(xl,yl)和(x2,y2)9(x,y)

■x=(xl+x2)/2zy=(yl+y2)/2

■Spotsi二newSpot(2z3);

■Spots2二newSpot(4z5);

■Spots二sl.midSpot(s2);

对象的使用

JAVA

■例对象用作方法的返®优

classSpot{class7est{

privatedoublex,y;publicstaticvoidmain(Stringargs[]){

Spot(doubleu,doublev){Spotsi=newSpot(3.0,5.0);

setX(u);setY(v);}Spots2=newSpot(6.0,8.0);

voidsetX(doublexl){x=xl;}System.out.println(''sl点的坐标:”

voidsetY(doubleyl){y=yl;}+sl.getX()+''//+sl.getY());

doublegetX(){returnx;}System.out.println(''s2j点的坐标:”

doublegetY(){returny;}+s2.getX()+''/+s2.getY());

SpotmidSpot(Spots){Spots=sl.midSpot(s2);

doublemidX=(x+s.getX())/2;System.out.printlnC中点的坐标:“

doublemidY=(y+s.getY())/2;+s.getX()+''/+s.getY());

SpotsMid=newSpot(midX,midY);)

returnsMid;

对象的使用

JAVA

■对象鼎殂

classlest{执行结果为:

publicstaticvoidmain(Stringargs[]){0

inta[]=newint[5];0

for(inti=0;i<a.length;i++)0

System.out.println(a[i]);0

Strings[]=newString[5];0

for(inti=0;i<s.length;i++)null

System.out.println(s[i]);null

null

null

null

55

对象的使用

■对象鼎殂

classStudent{

Studentst[]=new

privateStringname;

Student[10];

privateStringid;

for(inti=0;i<st.length;

Student(Stringsi,Strings2)

{name=si;id=s2;}i++){

st[i]=newStudent。.);

StringgetName(){returnname;)

voidsetName(Strings)for(inti=0;i<st.length;

{name=s;}

i++){

voiddisplay(){st[i].display();

System.out.println(name+

''〃+id);}

56

对象的使用

■对象作,另一个对象的闽员变量

classStudent{

privateStringname;

privateStringid;

Student(Stringsi,Strings2){

name=si;id=s2;

)

StringgetName(){returnname;}

voidsetName(Strings){name=s;}

■例,Exam3_10.java

对象的使用

■关桂祠this

■this能咨嘛对象

■加根程停可篌桃(Wis可有可无)

对象的使用

JAVA

■例1:bemol.java(碉用变量)

classDemol{

doublex,y;

Demol(doublei,doublej){

this.x=i;this,y=j;

doubleave(){

return(x+y)/2;

publicstaticvoidmain(Stringargs口){

Demold=newDemol(3,4);

System.out.println(d.ave());

59

对象的使用

JAVA

■例2:bemo2.java(碉用方法)

classDemo2{

intx,y,z;

Demo2(inta,intb){x=a;y=b;this.sort(a,b);}

■■■■■■

voidsort(inta,intb){

intt;

if(x<y){t=x;x=y;y=t}

60

第三章面向对象特征

1.基域槐念

2.类的笑文

3.对象

4.类的健家和多态

5.接口和包

6.卒用工具类

类的继承>

________________JAVA

■父类与3类的关系(extends)

■基域勾穿

1.3类可倜用父类的方法令变量,3类可槽加父类

中没嗡的方法和变量

2.3类可童新定文父类的静态/实例变量

3.3类可变新定义父类的静态/实例方法

4.健家中的构造方法

5.类咸员扬问修饰符号健示的关系

62

子类继承父类的方法和变量,

类的继承则这些方法和变量就属于子类,

子类对象就可以调用这些方法

■③类可碉用父类的方和变量

■3类可槽加父类中没有的方法和变量

classVehicle{Busb=newBus();

Stringbrand;

b.setBC'audi)〃**

voidsetB(Strings){brand=s;}

b.setG(lOO);

voidshowB(){System.out.println(brand);}

b.showB();〃**

)

b.showGQ;

classBusextendsVehicle{

intgas;

voidsetG(intg){gas=g;}

voidshowG(){System.out.println(gas);}

)

63

classA{

inti=256,j=64;Bb=newB();

256x5.0321

staticintk=32;b.show();

64322.718

finalfloate=2.718f;b.showA();

■父类中同名的变量无数(德藏)

■通述“super.变量名”和义类名.变量名(static变量)引

classBextendsA{this.变量名

publiccharj='x';this.方法名

温馨提示

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

评论

0/150

提交评论