Java程序设计第4章.ppt

上传人:小飞机 文档编号:6510023 上传时间:2023-11-07 格式:PPT 页数:40 大小:1.24MB
返回 下载 相关 举报
Java程序设计第4章.ppt_第1页
第1页 / 共40页
Java程序设计第4章.ppt_第2页
第2页 / 共40页
Java程序设计第4章.ppt_第3页
第3页 / 共40页
Java程序设计第4章.ppt_第4页
第4页 / 共40页
Java程序设计第4章.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《Java程序设计第4章.ppt》由会员分享,可在线阅读,更多相关《Java程序设计第4章.ppt(40页珍藏版)》请在三一办公上搜索。

1、第四章 面向对象(上),什么是抽象 类与对象及其关系 类中定义的属性(域)与方法(操作)对象 构造方法 类成员属性和方法的其它修饰符包(Package),主要内容,什么是抽象,抽象的定义,抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简明扼要的认识。,类与对象及其关系,类与对象及其关系,对象是对客观事物的抽象。类是对对象的抽象,在语言中是一种抽象的数据类型。类的定义在Java中可简述为 class 类名 它们的关系是,对象是类的实例,类是对象的模板。,类中定义的属性与方法,类中定义的属性(

2、域)与方法(操作),类和对象都有属性和操作,属性是事物静态特征的抽象,操作是事物动态特征的抽象。如【例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!”);,类的属性或称为“域”,类的方法,类中的域变量和方法存在以下关系,类中定义的域变量可以被类中所有的方法所访问。,方法中的形式参数和定义的局部变量

3、的作用域仅限 于方法,局部变量在使用前必须进行赋值初始化。如果局部变量和类中的属性变量重名,则在方法中 对同名变量改变的是局部变量。,类中定义的方法可以进行递归调用,【例4.2】,Java的类,一个Java类形式上包含两个部分:类首说明 类体,类首说明,类首说明的形式如下:修饰符 class 类名 extends超类名 implements接口名列表 类的修饰符有private、public、abstract、final。一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先后顺序之分,可以任意的顺序排列它们。注意:abstract和final不能同时作为一

4、个类的修饰符。private(私有):修饰的类只能被同一包名中的类访问,这是Java默认方式;public(公共):修饰的类能被所有的类访问;abstract(抽象):修饰的类不能被实例化,它包含有未实现的方法。final(最终):修饰的类不能被继承,即不能有子类。类名是所创建的类的名字,类名可以是任意的Java标识符,根据Java命名的约定,类名的每个有意义的单词的首字母要大写,其余字母小写。extends(继承):保留字用来表明新创建的类继承哪个类,被继承的类称为此类的超类。extends后面只能跟一个超类名称。implements(实现):用来表明这个类实现了哪些接口,接口名可以有多个。

5、,类体,类体中定义了该类所有的成员变量和该类所支持的方法,其形式说明如下:类体 成员变量说明 构造方法说明 静态初始化说明 方法说明 类体由成员变量说明、构造方法说明、静态初始化说明和方法说明构成,它们都是可选的。类体中的这四种说明没有先后顺序之分,但是为了类的可读性,建议按照上面出现的顺序说明。,成员变量说明及其使用,1成员变量说明 成员变量的说明类似于方法的局部变量说明,所不同的是,成员变量定义在类中,是类成员的一部分,整个类都可以访问它。Java中成员变量说明形式如下:修饰符 成员变量类型 成员变量名列表;成员变量的修饰符有以下几种:缺省访问修饰符、public、protected、pr

6、ivate、final、static、transient和volatile。,(1)缺省访问修饰符 缺省访问修饰符的成员变量可以被同一包(package)中的任何类访问。(2)public(公共)public修饰的成员变量可以被项目文件中的任何方法所访问。由于public成员变量不受限制,这易使类的对象引起不希望的修改,建议成员变量尽量不要使用public修饰符。(3)protected(受保护)protected修饰的成员变量可以被有继承关系的类自由访问,即子类可以访问它。(4)private(私有)private修饰的成员变量只能在同一个类中使用。这种方式通常是最为安全的。(5)stati

7、c(静态):(类变量)static修饰的成员变量又称为类变量。不加static修饰的成员变量又叫对象变量。对象变量依附于具体的对象实例,它的值因具体对象实例的不同而不同,而类变量为该类的所有对象共享,它的值不因类的对象不同而不同。(6)final(最终):(常量)final修饰的成员变量叫最终成员变量。一开始创建该变量时将其设定了一个值,在以后程序的运行过程当中,变量的值将一直保持这个值不变。最终变量又称为常量。Java中的常量必须是类的成员。对于最终成员变量,任何赋值都将导致编译错误。因为常量在说明以后就不能改变其值,所以常量必须要使用变量初始化来赋初值。无论是实例变量,还是类变量,都可以被

8、说明成常量。final修饰符和static修饰符并不冲突。成员变量类型可以是基本类型或类。成员变量名使用符合Java规定的标识符来表示。,成员变量使用,类的成员变量在定义它的类内部,直接通过成员变量名来访问。如从类的外部访问,类变量和类对象变量的使用方法是不同。使用类变量的格式如下:类名.类变量名 由此可见,访问类变量与类的对象构造和对象都无关。访问类对象变量的格式如下:类对象名.类对象变量名 由此可见,要使用对象变量首先要构造对象,获得类对象名。类对象名即对应的类变量名。,例4-1 成员变量的访问 class Point final static Point origin=new Point

9、(0,0);/定义一个类变量,常量,origin为坐标原点 int x;int y;Point(int x,int y)thisx=x;this.y=y;public class UsingStatic public static void main(String args)Point p1=Point(10,20);/构造类Point的对象p1 Point p2=Point(310,120);System.out.println(类Point中的类变量:);System.out.println(+Point.origin.x+,+Point.origin.y+);/访问类变量(类名.类变量名

10、)System.out.println(类Point中的类实例变量:);System.out.println(+p1.x+,+p1.y+);/访问类对象变量x、y,p是类对象名(类对象名.类对象变量名),迪米特法则,Law of Demeter1987,Northeastern University火星登陆软件,木星欧罗巴卫星轨道飞船软件系统Dont talk to strangers,对 象,对象的产生,对象的产生使用的代码:new FighterPlane();,对象的声明使用的代码:FighterPlane fp;,可以声明后立即赋予对象:FighterPlane fp=new Figh

11、terPlane(),对象内存空间分布,当“FighterPlane fp=new FighterPlane()”处于某个方法中时:,对象作为参数的特点,普通数据类型作为参数传递是值传递,【例4.3】。,对象是引用传递。,对象,a,【例4.4】,【例4.5】,对象数组,MyClass mc=new MyClass10;,数组对象特点及常用方法,具有对象引用的特点,例【4.6】,属性length的用法,例【4.7】,构造方法,构造方法的含义,【例4.8】,构造方法的特征,【例4.9】、【4.10】,构造方法的注意事项,finalize方法与垃圾回收,构造方法说明,每当由类构造对象时都要调用该类特

12、定的构造方法,在Java中,每个类都至少有一个构造方法。构造方法可以确保用户正确地构造类的对象,同时,构造方法也会对对象作初始化工作。构造方法说明形式如下:构造方法修饰符 方法名(形式参数列表)throws异常列表 方法体 构造方法修饰符与一般方法修饰符相同,读者参见小节。构造方法不能像一般的方法那样被直接调用,它是在构造类的实例的时候被Java编译器自动调用的。当我们构造一个类的实例的时候,编译器主要完成以下三件事情:(1)为对象分配内存空间;(2)初始化对象中的实例变量的值,初始值可以是缺省值,或者变量按指定的值初始化;(3)调用对象的构造方法。一个类的构造方法可以有多个,它们都具有相同的

13、方法名,即类名。编译器根据参数的类型来决定调用哪个构造方法。构造方法分为缺省的构造方法(不带参数)和带参数的构造方法。,缺省的构造方法,如果类的定义没有编制构造方法,Java语言会自动为用户提供。这个由Java自动提供的构造方法就是所谓的缺省构造方法。缺省的构造方法确保每个Java类都至少有一个构造方法,该方法应符合类的定义。例如在例4-1的类Point中,如果我们没有定义构造方法,则Java自动提供了一个缺省的构造方法,如下:缺省的构造方法:public Point();/对象成员变量的初值按Java规定,带参数的构造方法,带有参数的构造方法能够实现这样的功能:当构造一个新对象时,类构造方法

14、可以按需要将一些指定的参数传递给构造方法。如:public Point(int x,int y)this.x=x;this.y=y;,类成员属性和方法的非访问修饰符,方法说明,在Java中,方法总是Java类的一个组成部分。通过类的方法,改变对象的状态。方法说明的格式如下:方法首部说明 方法体 方法说明分为方法首部说明和方法体两部分。,方法修饰符包括以下几种:public 修饰的方法可以由其他类访问;protected 修饰的方法只能由继承关系的类访问;private 修饰的方法只能由说明该方法的类访问;static 修饰的方法为静态方法,又叫类方法;无static修饰的方法为对象方法。类方法

15、是该类的所有对象共享的方法。abstract 修饰的方法为抽象方法,无其方法体;final 修饰的方法为最终方法,不能由子类改变;synchronized(同步)修饰的方法执行之前给方法设置同步机制,实现线程同步;native 修饰的方法为本地方法,即方法实现与本机系统有关。,方法名是Java中任意的标识符。按照命名的约定,方法名应该是有意义的动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。返回值类型可以是任意的Java类型,甚至可以是定义此方法的类。如果方法没有返回值,则用void表示。形式参数列表是可选的。如果方法没有形式参数,就用一对小括号“()”

16、表示。形式参数列表的形式如下:(类型 形参名,类型 形参名,)throws异常列表规定了在方法执行中可能导致的异常。第5章会详细介绍。,方法体 方法体是实现这个方法的代码段,它由“”和“”括起来的语句序列构成。方法体也可以是一个分号“;”,表示无方法体,该类没有实现。当且仅当方法的修饰符中有abstract或native时,方法才无方法体。,方法的调用,类方法调用形式如下:类名.类静态方法名(实参列表)对象方法调用形式如下:类对象名.类非静态方法名(实参列表)前面的例子中经常使用到类方法,应用程序中的主方法main就是类方法。类方法和类变量一样,都是对整个类而言的,而不是针对类的对象。一些通用

17、的、公用型的方法不能直接作用在类的对象,因此常常被作为类方法实现。Java类库中Math类,其中多数的数学运算的操作都被定义成静态方法。因此,一些通用的、公用型的方法可以使用类方法把它们放在合适的类中,从而很好地将它们组织起来。,关于类方法的使用,有如下一些限制:(1)在类方法中不能引用对象变量。(2)在类方法中不能使用super、this关键字(super、this介绍见后)。(3)类方法不能调用类中的对象方法。如果违反这些限制,你的程序就会导致编译错误。与类方法相比,对象方法几乎没有什么限制:(1)对象方法可以引用对象变量(这是显然的),也可以引用类变量(甚至一个对象变量都不引用)。(2)

18、对象方法中可以使用supper、this关键字。(3)对象方法中可以调用类方法。如果包含类方法的类被继承,那么其子类中既可以使用带有超类名的限定名来访问该类方法,也可以使用子类名的限定名来访问该类方法。,static,用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。,它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。,访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。,Static修饰的方法有如下特点:,static方法是类方法,但可以被所有对象所访问,引用这个方法时

19、,可以使用对象名做前缀,也可以使用类名做前缀。static方法内部的代码,只能访问类中的static属性或方法,不能访问类中的非static属性或方法(因为那是对象方法),但非static方法(对象方法)可以访问static数据成员。main方法是特殊的静态方法,是Application程序入口点,必须写成public static void main(String args)的形式。,final,final修饰属性,则属性为常量(全部大写);,如果修饰方法,则方法称为最终方法,在子类当中不能被覆盖,可防止任何继承类修改此方法。,abstract与native,包(Package),包(Package),随着Java的应用,SUN公司的JDK,各系统开发商,以及自己开发的类越来越多,如何对这些类进行有效的组织管理和有效使用,Java的解决办法是“包”。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号