Java网络编程基础 第4章 Java面向对象的程序设计.ppt
《Java网络编程基础 第4章 Java面向对象的程序设计.ppt》由会员分享,可在线阅读,更多相关《Java网络编程基础 第4章 Java面向对象的程序设计.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 JavaJava面向对象的程序设计面向对象的程序设计4.1 面向对象的理论基础面向过程面向过程 在一个结构体中定义窗口的大小、位置、颜色背景等属性,对窗口操作的函数与窗口本身的定义没有任何关系,如HideWindow,MoveWindow和MinimizeWindow,这些函数都需要接受一个代表要被操作的窗口参数,是一种谓语与宾语的关系。面向对象面向对象 定义窗口时,除了要指定在面向过程中规定的那些属性,如大小、位置、颜色、背景等外,还要制定该窗口可能具有的动作,如隐藏、移动、最小化等,这些函数被调用时,都是以某个窗口要怎样来使用的,是一种主语与谓语的关系。4.2 对象和类cla
2、ss person int name;boolean sextype;int age;void eat()void sleep();void work()计算机中的数据原型,即我们定义的类 现实生活中的对象 现实生活中的对象现实生活中的对象抽象得到类的定义抽象得到类的定义类实例化得到对象类实例化得到对象 现实世界现实世界 计算机中的数据计算机中的数据4.2 对象和类对象和类的关系对象是类的实例化类是对象的抽象电视机设计图电视机1电视机2电视机3类对象 什么是类:什么是类:类是描述对象的类是描述对象的“基本原型基本原型”,它定义一种对象所能拥有的,它定义一种对象所能拥有的数据和能完成的操作数据和
3、能完成的操作(成员变量,方法成员变量,方法)。什么是对象:什么是对象:是类的一个实例,是一个实实在在的个体。是类的一个实例,是一个实实在在的个体。4.2 对象和类data数据元素数据元素 方方 法法一个例子:ageage是是属性属性,也叫,也叫成员变量成员变量;showAgeshowAge叫叫类的成员函数类的成员函数;showAgeshowAge方法可以直接访问同一个类中的方法可以直接访问同一个类中的ageage变量,如果该方法中有变量,如果该方法中有与成员变量同名的局部变量,该方法对这个变量名的访问是局部变与成员变量同名的局部变量,该方法对这个变量名的访问是局部变量,不再是成员变量。量,不再
4、是成员变量。class Person int age;public void showAge()System.out.println(age);对象的产生:Person p1=new Person();执行后的内存状态:比较:int xx=new int30;执行后的内存状态:对象的使用:创建新的对象之后,我们就可以使用“对象名.对象成员”的格式,来访问对象的成员(包括属性和方法)Class Class TestPersonTestPerson public static void main(String public static void main(String argsargs)Pers
5、on p1=new Person();Person p1=new Person();Person p2=new Person();Person p2=new Person();p1.age=-30;p1.age=-30;p1.p1.showAgeshowAge();();p2.p2.showAgeshowAge();();对象的使用:上面程序运行的内存布局图如下:对象的生命周期:包包的概念的概念:为解决同一任务或子任务的类组成一个包为解决同一任务或子任务的类组成一个包由由包包、子子包包和和类类构构成成的的一一般般JavaJava程程序序的的树树型型结结构构,JavaJava程程序序保保存存在在
6、文文件件系系统统时时,包包名名对对应应于于一一目目录录名名,子子包包名名对对应应于于目目录录的的子子目目录录,类类对应于它目录树型结构的结点。对应于它目录树型结构的结点。-包名包名1 1 -包名包名1_11_1 -类类1_1_11_1_1 -类类1_1_21_1_2 -类类1_1_31_1_3 -包名包名1_21_2 -类类1_2_11_2_1 -类类1_2_21_2_24.4.3 3 javajava的的包与类包与类4.3.1 类描述对象特征public class Pointpublic class Point public public int int x;/x;/成员变量说明,定义点的
7、成员变量说明,定义点的x x坐标坐标public public int int y;/y;/成员变量说明,定义点的成员变量说明,定义点的y y坐标坐标public Point(public Point(intint X,X,intint Y)/Y)/带参数的构造方法;带参数的构造方法;x=X;y=Y;x=X;y=Y;public double distance()/public double distance()/计算点到原点的距离计算点到原点的距离 return Math.return Math.sqrtsqrt(x*x+y*y);(x*x+y*y);类首说明的形式如下:类首说明的形式如下:
8、packagepackage说明说明 import import 说明说明 修饰符修饰符 class class 类名类名 extends extends 父类名父类名 implements implements 接口列表接口列表 1 1.类修饰符分类:类修饰符分类:friendlyfriendly(默认)默认)类只能被本包中的其他类使用类只能被本包中的其他类使用publicpublic(公共)公共)类能被所有的类访问,注意。类能被所有的类访问,注意。abstractabstract(抽象)抽象)类不能被实例化,含未实现的方法类不能被实例化,含未实现的方法finalfinal(最终)最终)类不
9、能被继承,即不能有子类类不能被继承,即不能有子类2.2.extendsextends:实现单继承4.3.2 4.3.2 类首说明类首说明类体形式说明如下:类体形式说明如下:成员变量说明成员变量说明 构造方法说明构造方法说明 静态方法说明静态方法说明 方法说明方法说明 注意:注意:类体中说明都是可选的类体中说明都是可选的,也没有也没有先后顺序先后顺序之分之分4.3.2 4.3.2 类体类体说明形式:说明形式:修饰符修饰符 类型类型 成员变量名成员变量名1,1,成员变量名成员变量名n;n;修饰符两类:修饰符两类:1 1 访问修饰符:访问修饰符:默认默认的成员变量可以被定义同一包中的任何类访问;的成
10、员变量可以被定义同一包中的任何类访问;publicpublic成员变量可以被项目文件中的任何方法所访问;成员变量可以被项目文件中的任何方法所访问;protectedprotected变量可以被有继承关系的类和同一包中的类的访问;变量可以被有继承关系的类和同一包中的类的访问;privateprivate成员变量只能在同一个类中定义的方法中使用,成员变量只能在同一个类中定义的方法中使用,此法安全此法安全 2 2 其它:其它:finalfinal(常量)、常量)、staticstatic(静态)静态)成员变量说明成员变量说明修饰符修饰符类内类内子类子类包内其他类包内其他类其他包内的类其他包内的类缺省
11、缺省(friendly)publicprivateprotected变量的访问权限变量的访问权限在表格中:在表格中:表示允许访问,表示允许访问,表示禁止访问表示禁止访问 大小大小 public protected 缺省缺省private 1 1 用用staticstatic修饰的成员变量叫修饰的成员变量叫类变量类变量(或或静态变量静态变量),),而而没有没有用用staticstatic修饰的成员变量叫修饰的成员变量叫对象变量对象变量。2 2 staticstatic修饰的数据和方法不局限于所属的对象修饰的数据和方法不局限于所属的对象 所以它不需要创建对象就可以直接访问。所以它不需要创建对象就可
12、以直接访问。static(static(静态静态)类的内部:类的内部:只用变量名即可访问只用变量名即可访问类的外部类的外部:1 1 对象变量:对象变量:只有在构造对象后才能访问到只有在构造对象后才能访问到 格式为格式为:对象名对象名.对象变量对象变量 2 2 类变量类变量:(1 1)通过类名访问通过类名访问 格式格式 :类名类名.类变量名类变量名 (2 2)通过对象名来访问通过对象名来访问成员变量使用成员变量使用例:例:classclass A A static static intint ax;ax;int ay;public classpublic class B B static sta
13、tic intint bxbx;int by;public static voidpublic static void mainmain(String(String argsargs)A.ax=5;A.ax=5;bxbx=A.ax+2;=A.ax+2;/访问类变量访问类变量(不需建对象不需建对象)A A1=A A1=newnew A();A();/创建类创建类A的一个对象的一个对象A1 B B1=B B1=newnew B();B();/创建类创建类B的一个对象的一个对象B1 A1.ay=6;A1.ay=6;/访问对象访问对象A1的成员变量的成员变量ay B1.by=A1.ax;B1.by=A
14、1.ax;/访问对象访问对象B1的成员变量的成员变量by System.out.System.out.printlnprintln(A.ax+“”+B.(A.ax+“”+B.bxbx););/输出二变量的输出二变量的值值 System.out.System.out.printlnprintln(B1.(B1.bxbx+B1.by);+B1.by);/输出二变量的和输出二变量的和 /程序结束程序结束成员变量访问的例子成员变量访问的例子访问本类的类变量可省略类名访问类变量也可通过类对象名访问本类的类变量时,也可加上类名或类对象名实现类的封装性如果外面的程序可以随意修改一个类的成员变量,如果外面的程
15、序可以随意修改一个类的成员变量,会造成不可预料的程序错误,就像一个人的身高,会造成不可预料的程序错误,就像一个人的身高,不能被外部随意修改,只能通过各种摄取营养的不能被外部随意修改,只能通过各种摄取营养的方法去修改这个属性。方法去修改这个属性。在定义一个类的成员(包括变量和方法)时,使在定义一个类的成员(包括变量和方法)时,使用用private关键字说明这个成员的访问权限,这个关键字说明这个成员的访问权限,这个成员就成了类的私有成员,该类能被这个类的其成员就成了类的私有成员,该类能被这个类的其他成员方法使用,而不能不其他的类中的方法所他成员方法使用,而不能不其他的类中的方法所调用。调用。实现类
16、的封装性为了实现更好的封装性,我们通常将类的成员变量声名为了实现更好的封装性,我们通常将类的成员变量声名为为private,在通过在通过public的方法来对这个变量进行访问。的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和赋值操作,我们分对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是取这个成员变量操作,另外一个是setXxx()用来对这个用来对这个成员变量赋值。成员变量赋值。一个
17、类通常就是一个小的模块,我们应该让模块仅仅公一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他一切内容。我开必须要让外界知道的内容,而隐藏其他一切内容。我们在进行程序的详细设计时,应尽量避免一个模块直接们在进行程序的详细设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求修改或操作另一个模块的数据,模块设计追求强内聚强内聚(许多功能尽量在类的内部独立完成,不让外面干预),(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合弱耦合(提供给外部尽量少的方法调用)。(提供给外部尽量少的方法调用)。构造方法构造方法构造方法的作用:构造方法的作用:
18、当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成的初始化工作的代码。这就好像我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是,每个“人”一出生就会自动完成“洗澡”,程序不必再在每个人刚出生是一个一个告诉他们要“洗澡”了。作用:作用:专门用于专门用于创建类对象创建类对象的方法。的方法。形式:形式:修饰符修饰符 方法名(方法名(形式参数列表形式参数列表)throwsthrows异常列表异常列表 方法体方法体 调用:调用:创建对象时被创建对象时被JavaJava编译器编译器自动调用自动调用的。的。当构造一个
19、类的实例时,便以其主要完成以下工作:当构造一个类的实例时,便以其主要完成以下工作:为对象分配内存空间为对象分配内存空间初始化对象中的成员变量的值初始化对象中的成员变量的值调用对象的构造方法调用对象的构造方法一个类的构造方法可以有多个,他们具有一个类的构造方法可以有多个,他们具有相同的方法名相同的方法名,编,编译器会根据参数的类型及个数来判断使用哪个构造方法。译器会根据参数的类型及个数来判断使用哪个构造方法。构造方法说明构造方法说明注意:没有返回值类型(void也不行)1 1)缺省的构造方法:无参数缺省的构造方法:无参数2 2)自定义构造方法自定义构造方法:可带、也可不带参数可带、也可不带参数用
20、户定义的构造方法可以带有或不带有参数用户定义的构造方法可以带有或不带有参数 构造函数分类:构造函数分类:自定义构造方法自定义构造方法p1=new person(“tom”,78),该代码会做这该代码会做这样几件事:样几件事:创建指定的类的新实例对象创建指定的类的新实例对象在堆内存中为实例对象分配内存空间,并调用在堆内存中为实例对象分配内存空间,并调用指定的类的构造方法指定的类的构造方法最后将实例对象的首地址赋值给引用变量最后将实例对象的首地址赋值给引用变量p1p1=new person(“tom”,78)的内存变化过程分析this是什么?如果如果func2方法被调用,一定是事先已经有了一个存在
21、方法被调用,一定是事先已经有了一个存在的对象,的对象,func2作为那个对象的方法被使用。作为那个对象的方法被使用。在在func2内部能引用别的对象,同样也能引用内部能引用别的对象,同样也能引用func2所所属的那个对象。属的那个对象。在在func2中,自己所属的那个对象的引用名称是什么呢中,自己所属的那个对象的引用名称是什么呢?this关键字在关键字在java程序里的作用和它的词义很接近,程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。它在函数内部就是这个函数所属的对象的引用变量。this引用句柄所在的位置每个成员方法内部,都有一个this引用变量,指向调用这个方
22、法的对象,类中的成员方法与this之间的关系如图this引用句柄的应用一个类中的成员方法可以直接调用同类中的其他一个类中的成员方法可以直接调用同类中的其他成员,其实我们在一个方法内部使用成员,其实我们在一个方法内部使用“this.其其他成员他成员”的引用方式和直接用的引用方式和直接用“其他成员其他成员”的效的效果是一样的,那果是一样的,那this还有多大的作用呢?在下面还有多大的作用呢?在下面的情况下,我们还是的情况下,我们还是非得用非得用this关键字不可关键字不可的:的:让类的成员变量名和对其赋值的成员方法的参数让类的成员变量名和对其赋值的成员方法的参数变量变量同名同名是必要的;是必要的;
23、在一个构造方法里在一个构造方法里调用其他的构造方法调用其他的构造方法,不是用,不是用构造方法名,而是用构造方法名,而是用this(参数列表的形式),参数列表的形式),根据其中的参数列表,选择相应的构造方法。根据其中的参数列表,选择相应的构造方法。方法首部说明 方法体 方法的调用 方法说明及调用方法说明及调用说明形式:说明形式:修饰符修饰符 返回值类型返回值类型 方法名(方法名(形参列表形参列表throws throws 异常列表异常列表 修饰符分类:修饰符分类:v 访问修饰符:访问修饰符:缺省、缺省、publicpublic、protectedprotected、privateprivatev
24、 非访问修饰符:非访问修饰符:staticstatic:静态方法静态方法 abstractabstract:抽象方法,无方法体抽象方法,无方法体 finalfinal:最终方法,子类不能改变其方法实现最终方法,子类不能改变其方法实现 nativenative:本地方法,即方法实现与本机系统有关本地方法,即方法实现与本机系统有关 synchronizedsynchronized(同步):执行前要给方法设置同步机制同步):执行前要给方法设置同步机制1.方法首部说明方法首部说明一定要有返回类型(1)(1)方法体方法体 方法体是由一对大括号括起来的一段代码,格式如下:方法体是由一对大括号括起来的一段代
25、码,格式如下:/方法体开始方法体开始 实现方法的代码段实现方法的代码段 /方法体结束方法体结束 方法体也可以是一个分号方法体也可以是一个分号“;”,表示无具体方法(方,表示无具体方法(方法还没有实现,即只是一个方法框架。法还没有实现,即只是一个方法框架。注意:注意:只有方法的修饰符中有只有方法的修饰符中有abstractabstract或或nativenative时,方法时,方法才可无方法体。才可无方法体。2.2.方法体方法体returnreturn语句用于从当前方法中退出,返回到调用该方法的语句用于从当前方法中退出,返回到调用该方法的语句处继续程序的执行。其格式如下:语句处继续程序的执行。其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java网络编程基础 第4章 Java面向对象的程序设计 Java 网络 编程 基础 面向 对象 程序设计
限制150内