Java程序设计第4章.ppt
《Java程序设计第4章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计第4章.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 面向对象(上)面向对象(上)l什么是抽象什么是抽象l类与对象及其关系类与对象及其关系l类中定义的属性(域)与方法(操作)类中定义的属性(域)与方法(操作)l对象对象l构造方法构造方法l类成员属性和方法的其它修饰符类成员属性和方法的其它修饰符l包(包(Package)主要内容主要内容什么是抽象抽象的定义抽象的定义l抽象(abstraction)是从被研究对象中舍弃个别的、)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简究有关的共性内容加以考察,形成对研究问题
2、正确的简明扼要的认识。明扼要的认识。动物物经过人类抽象用一个叫”动物”的类来概括类与对象及其关系 类与对象及其关系类与对象及其关系 l对象是对客观事物的抽象。对象是对客观事物的抽象。l类是对对象的抽象,在语言中是一种抽象的数据类是对对象的抽象,在语言中是一种抽象的数据类型。类型。l类的定义在类的定义在Java中可简述为中可简述为lclass类名类名l它们的关系是,对象是类的实例,类是对象的模它们的关系是,对象是类的实例,类是对象的模板。板。类中定义的属性与方法 类中定义的属性(域)与方法(操作)类中定义的属性(域)与方法(操作)类和对象都有属性和操作,属性是事物静态特征的抽象,操作是事物动态特
3、征的抽象。如【例4.1】class FighterPlane String name;int missileNum;void fire()if(missileNum0)missileNum-=1;System.out.println(“now fire a missile!”);else System.out.println(“No missile left!”);类的属性或称为“域”类的方法类中的域变量和方法存在以下关系类中的域变量和方法存在以下关系1.类中定义的域变量可以被类中所有的方法所访问。2.方法中的形式参数和定义的局部变量的作用域仅限 于方法,局部变量在使用前必须进行赋值初始化。如
4、果局部变量和类中的属性变量重名,则在方法中 对同名变量改变的是局部变量。3.类中定义的方法可以进行递归调用【例4.2】Java的类的类一个一个Java类形式上包含两个部分:类形式上包含两个部分:类首说明 类体类首说明类首说明的形式如下:类首说明的形式如下:修饰符 class 类名 extends超类名 implements接口名列表 类的修饰符有类的修饰符有private、public、abstract、final。一个类可以同时有多个修。一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先
5、后顺序之分,可以任意的顺序排列它们。先后顺序之分,可以任意的顺序排列它们。注意:abstract和和final不能同时作为一个类的修饰符。不能同时作为一个类的修饰符。private(私有私有):修饰的类只能被同一包名中的类访问,这是修饰的类只能被同一包名中的类访问,这是Java默认方式;默认方式;public(公共公共):修饰的类能被所有的类访问;修饰的类能被所有的类访问;abstract(抽象抽象):修饰的类修饰的类不能被实例化,它包含有未实现的方法。,它包含有未实现的方法。final(最终最终):修饰的类不能被继承,即修饰的类不能被继承,即不能有子类。类名是所创建的类的名字,类名可以是任意
6、的类名是所创建的类的名字,类名可以是任意的Java标识符,根据标识符,根据Java命名命名的约定,类名的每个有意义的单词的首字母要大写,其余字母小写。的约定,类名的每个有意义的单词的首字母要大写,其余字母小写。extends(继承继承):保留字用来表明新创建的类继承哪个类,被继承的类称为保留字用来表明新创建的类继承哪个类,被继承的类称为此类的超类。此类的超类。extends后面只能跟一个超类名称。后面只能跟一个超类名称。implements(实现实现):用来表明这个类实现了哪些接口,接口名可以有多个。用来表明这个类实现了哪些接口,接口名可以有多个。类体类体中定义了该类所有的成员变量和该类所支持
7、的方法,其形式说明类体中定义了该类所有的成员变量和该类所支持的方法,其形式说明如下:如下:类体 成员变量说明 构造方法说明 静态初始化说明 方法说明 类体由成员变量说明、构造方法说明、静态初始化说明和方法说明构类体由成员变量说明、构造方法说明、静态初始化说明和方法说明构成,它们都是可选的。类体中的这四种说明没有先后顺序之分,但是成,它们都是可选的。类体中的这四种说明没有先后顺序之分,但是为了类的可读性,建议按照上面出现的顺序说明。为了类的可读性,建议按照上面出现的顺序说明。成员变量说明及其使用成员变量说明及其使用1成员变量说明 成员变量的说明类似于方法的局部变量说明,所不同成员变量的说明类似于
8、方法的局部变量说明,所不同的是,成员变量定义在类中,是类成员的一部分,整的是,成员变量定义在类中,是类成员的一部分,整个类都可以访问它。个类都可以访问它。Java中成员变量说明形式如下:中成员变量说明形式如下:修饰符修饰符成员变量类型成员变量类型成员变量名列表成员变量名列表;成员变量的修饰符有以下几种:缺省访问修饰符、成员变量的修饰符有以下几种:缺省访问修饰符、public、protected、private、final、static、transient和和volatile。(1)缺省访问修饰符缺省访问修饰符的成员变量可以被同一包(缺省访问修饰符的成员变量可以被同一包(package)中的任何
9、类访问。)中的任何类访问。(2)public(公共)public修饰的成员变量可以被项目文件中的任何方法所访问。由于修饰的成员变量可以被项目文件中的任何方法所访问。由于public成员变量不受成员变量不受限制限制,这易使类的对象引起不希望的修改,建议成员变量尽量不要使用这易使类的对象引起不希望的修改,建议成员变量尽量不要使用public修饰符。修饰符。(3)protected(受保护)protected修饰的成员变量可以被有继承关系的类自由访问,即子类可以访问它。修饰的成员变量可以被有继承关系的类自由访问,即子类可以访问它。(4)private(私有)private修饰的成员变量只能在同一个类
10、中使用。这种方式通常是最为安全的。修饰的成员变量只能在同一个类中使用。这种方式通常是最为安全的。(5)static(静态):(类变量)(类变量)static修饰的成员变量又称为类变量。不加修饰的成员变量又称为类变量。不加static修饰的成员变量又叫对象变量。修饰的成员变量又叫对象变量。对象对象变量依附于具体的对象实例,它的值因具体对象实例的不同而不同,而类变量为该类变量依附于具体的对象实例,它的值因具体对象实例的不同而不同,而类变量为该类的所有对象共享,它的值不因类的对象不同而不同。的所有对象共享,它的值不因类的对象不同而不同。(6)final(最终):(常量)(常量)final修饰的成员变
11、量叫最终成员变量。一开始创建该变量时将其设定了一个值,在以修饰的成员变量叫最终成员变量。一开始创建该变量时将其设定了一个值,在以后程序的运行过程当中,变量的值将一直保持这个值不变。最终变量又称为常量。后程序的运行过程当中,变量的值将一直保持这个值不变。最终变量又称为常量。Java中的常量必须是类的成员。对于最终成员变量,任何赋值都将导致编译错误。因中的常量必须是类的成员。对于最终成员变量,任何赋值都将导致编译错误。因为常量在说明以后就不能改变其值,所以常量必须要使用变量初始化来赋初值。无论为常量在说明以后就不能改变其值,所以常量必须要使用变量初始化来赋初值。无论是实例变量,还是类变量,都可以被
12、说明成常量。是实例变量,还是类变量,都可以被说明成常量。final修饰符和修饰符和static修饰符并不冲突。修饰符并不冲突。成员变量类型可以是基本类型或类。成员变量名使用符合成员变量类型可以是基本类型或类。成员变量名使用符合Java规定的标识符来表示。规定的标识符来表示。成员变量使用类的成员变量在定义它的类内部,直接通过类的成员变量在定义它的类内部,直接通过成员变量名来访问。如从类的外部访问,类变量和类来访问。如从类的外部访问,类变量和类对象变量的使用方法是不同。使用类变量的格式对象变量的使用方法是不同。使用类变量的格式如下:如下:类名.类变量名 由此可见,访问类变量与类的对象构造和对象都无
13、关。由此可见,访问类变量与类的对象构造和对象都无关。访问类对象变量的格式如下:访问类对象变量的格式如下:类对象名.类对象变量名 由此可见,要使用对象变量首先要构造对象,获得类由此可见,要使用对象变量首先要构造对象,获得类对象名。类对象名即对应的类变量名。对象名。类对象名即对应的类变量名。例例4-1成员变量的访问成员变量的访问classPointfinalstaticPointorigin=newPoint(0,0);/定义一个类变量,常量,定义一个类变量,常量,origin为坐标原点为坐标原点intx;inty;Point(intx,inty)thisx=x;this.y=y;publiccl
14、assUsingStaticpublicstaticvoidmain(Stringargs)Pointp1=Point(10,20);/构造类构造类Point的对象的对象p1Pointp2=Point(310,120);System.out.println(类类Point中的类变量:中的类变量:);System.out.println(+Point.origin.x+,+Point.origin.y+);/访问类变量访问类变量(类名.类变量名)System.out.println(类类Point中的类实例变量:中的类实例变量:);System.out.println(+p1.x+,+p1.y+
15、);/访问类对象变量访问类对象变量x、y,p是类对象名是类对象名(类对象名.类对象变量名)迪米特法则迪米特法则LawofDemeter1987,NortheasternUniversity火星登陆软件,木星欧罗巴卫星轨道飞船软件系统火星登陆软件,木星欧罗巴卫星轨道飞船软件系统Donttalktostrangers对 象对象的产生对象的产生NEW类对象对象的产生使用的代码:对象的产生使用的代码:newFighterPlane();对象的声明使用的代码:对象的声明使用的代码:FighterPlanefp;NEW类对象可以声明后立即赋予对象:可以声明后立即赋予对象:FighterPlanefp=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计
限制150内