资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
第11页 / 共40页
第12页 / 共40页
第13页 / 共40页
第14页 / 共40页
第15页 / 共40页
第16页 / 共40页
第17页 / 共40页
第18页 / 共40页
第19页 / 共40页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章,面向对象(上),第四章 面向对象(上),1,什么是抽象,类与对象及其关系,类中定义的属性(域)与方法(操作),对象,构造方法,类成员属性和方法的其它修饰符,包(,Package,),主要内容,什么是抽象 主要内容,2,什么是抽象,什么是抽象,3,抽象的定义,抽象,(,abstraction,)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简明扼要的认识。,动物,经过人类抽象,用一个叫”动物”的类来概括,抽象的定义抽象(abstraction)是从被研究对象中舍弃,4,类与对象及其关系,类与对象及其关系,5,类与对象及其关系,对象是对客观事物的抽象。,类是对对象的抽象,在语言中是一种抽象的数据类型。,类的定义在,Java,中可简述为,class,类名,它们的关系是,对象是类的实例,类是对象的模板。,类与对象及其关系 对象是对客观事物的抽象。,6,类中定义的属性与方法,类中定义的属性与方法,7,类中定义的属性(域)与方法(操作),类和对象都有属性和操作,属性是事物静态特征的抽象,操作是事物动态特征的抽象。如,【,例,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!”);,类的属性或称为“域”,类的方法,类中定义的属性(域)与方法(操作)类和对象都有属性和操作,,8,类中的域变量和方法存在以下关系,类中定义的域变量可以被类中所有的方法所访问。,方法中的形式参数和定义的局部变量的作用域仅限,于方法,局部变量在使用前必须进行赋值初始化。,如果局部变量和类中的属性变量重名,则在方法中,对同名变量改变的是局部变量。,类中定义的方法可以进行递归调用,【,例,4.2】,类中的域变量和方法存在以下关系类中定义的域变量可以被类中所有,9,Java,的类,一个,Java,类形式上包含两个部分:,类首说明,类体,Java的类 一个Java类形式上包含两个部分:,10,类首说明,类首说明的形式如下:,修饰符,class,类名,extends,超类名,implements,接口名列表,类的修饰符有,private,、,public,、,abstract,、,final,。一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先后顺序之分,可以任意的顺序排列它们。,注意:,abstract,和,final,不能同时作为一个类的修饰符。,private(,私有,),:修饰的类只能被同一包名中的类访问,这是,Java,默认方式;,public(,公共,),:修饰的类能被所有的类访问;,abstract(,抽象,),:修饰的类,不能被实例化,,它包含有未实现的方法。,final(,最终,),:修饰的类不能被继承,即,不能有子类,。,类名是所创建的类的名字,类名可以是任意的,Java,标识符,根据,Java,命名的约定,类名的每个有意义的单词的首字母要大写,其余字母小写。,extends(,继承,),:保留字用来表明新创建的类继承哪个类,被继承的类称为此类的超类。,extends,后面只能跟一个超类名称。,implements(,实现,),:用来表明这个类实现了哪些接口,接口名可以有多个。,类首说明 类首说明的形式如下:,11,类体,类体中定义了该类所有的成员变量和该类所支持的方法,其形式说明如下:,类体,成员变量说明,构造方法说明,静态初始化说明,方法说明,类体由成员变量说明、构造方法说明、静态初始化说明和方法说明构成,它们都是可选的。类体中的这四种说明没有先后顺序之分,但是为了类的可读性,建议按照上面出现的顺序说明。,类体 类体中定义了该类所有的成员变量和该类所支持的方法,其形,12,成员变量说明及其使用,1,成员变量说明,成员变量的说明类似于方法的局部变量说明,所不同的是,成员变量定义在类中,是类成员的一部分,整个类都可以访问它。,Java,中成员变量说明形式如下:,修饰符,成员变量类型 成员变量名列表,;,成员变量的修饰符有以下几种:缺省访问修饰符、,public,、,protected,、,private,、,final,、,static,、,transient,和,volatile,。,成员变量说明及其使用 1成员变量说明,13,(1),缺省访问修饰符,缺省访问修饰符的成员变量可以被同一包(,package,)中的任何类访问。,(2),public(,公共,),public,修饰的成员变量可以被项目文件中的任何方法所访问。由于,public,成员变量不受限制,这易使类的对象引起不希望的修改,建议成员变量尽量不要使用,public,修饰符。,(3),protected(,受保护,),protected,修饰的成员变量可以被有继承关系的类自由访问,即子类可以访问它。,(4),private(,私有,),private,修饰的成员变量只能在同一个类中使用。这种方式通常是最为安全的。,(5),static(,静态,),:,(类变量),static,修饰的成员变量又称为类变量。不加,static,修饰的成员变量又叫对象变量。,对象变量依附于具体的对象实例,它的值因具体对象实例的不同而不同,而类变量为该类的所有对象共享,它的值不因类的对象不同而不同。,(6),final(,最终,),:,(常量),final,修饰的成员变量叫最终成员变量。一开始创建该变量时将其设定了一个值,在以后程序的运行过程当中,变量的值将一直保持这个值不变。最终变量又称为常量。,Java,中的常量必须是类的成员。对于最终成员变量,任何赋值都将导致编译错误。因为常量在说明以后就不能改变其值,所以常量必须要使用变量初始化来赋初值。无论是实例变量,还是类变量,都可以被说明成常量。,final,修饰符和,static,修饰符并不冲突。,成员变量类型可以是基本类型或类。成员变量名使用符合,Java,规定的标识符来表示。,(1)缺省访问修饰符,14,成员变量使用,类的成员变量在定义它的类内部,直接通过,成员变量名,来访问。如从类的外部访问,类变量和类对象变量的使用方法是不同。使用类变量的格式如下:,类名,.,类变量名,由此可见,访问类变量与类的对象构造和对象都无关。访问类对象变量的格式如下:,类对象名,.,类对象变量名,由此可见,要使用对象变量首先要构造对象,获得类对象名。类对象名即对应的类变量名。,成员变量使用 类的成员变量在定义它的类内部,直接通过成员变量,15,例,4-1,成员变量的访问,class Point,final static Point origin=new Point(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+);/,访问类变量,(类名,.,类变量名),System.out.println(,类,Point,中的类实例变量:,);,System.out.println(+p1.x+,,,+p1.y+);,/,访问类对象变量,x,、,y,p,是类对象名,(类对象名,.,类对象变量名),例4-1 成员变量的访问,16,迪米特法则,Law of Demeter,1987,Northeastern University,火星登陆软件,木星欧罗巴卫星轨道飞船软件系统,Dont talk to strangers,迪米特法则Law of Demeter,17,对 象,对 象,18,对象的产生,NEW,类,对象,对象的产生使用的代码:,new FighterPlane();,对象的声明使用的代码:,FighterPlane fp;,对象的产生 NEW类对象对象的产生使用的代码:new,19,NEW,类,对象,可以声明后立即赋予对象:,FighterPlane fp =new FighterPlane(),NEW类对象可以声明后立即赋予对象:FighterPlane,20,对象内存空间分布,当“,FighterPlane fp =new FighterPlane()”,处于某个方法中时:,对象内存空间分布当“FighterPlane fp =n,21,对象作为参数的特点,普通数据类型作为参数传递是值传递,,【,例,4.3】,。,对象是引用传递。,a,对象,s,对象,a,s,【,例,4.4】,【,例,4.5】,对象作为参数的特点 普通数据类型作为参数传递是值传递,【例4,22,对象数组,MyClass mc=new MyClass10,;,数组对象特点及常用方法,具有对象引用的特点,例,【4.6】,属性,length,的用法,例,【4.7】,对象数组MyClass mc=new MyClas,23,构造方法,构造方法,24,构造方法的含义,,【,例,4.8】,构造方法的特征,,【,例,4.9】,、,【4.10】,构造方法的注意事项,finalize,方法与垃圾回收,什么是垃圾对象,?,垃圾对象何时回收,?,垃圾对象回收时调用,finalize,方法。,构造方法的含义,【例4.8】构造方法的特征,【例4.9】、,25,构造方法说明,每当由类构造对象时都要调用该类特定的构造方法,在,Java,中,每个类都至少有一个构造方法。构造方法可以确保用户正确地构造类的对象,同时,构造方法也会对对象作初始化工作。构造方法说明形式如下:,构造方法修饰符,方法名(,形式参数列表,),throws,异常列表,方法体,构造方法修饰符与一般方法修饰符相同,读者参见,4.3.3,小节。,构造方法不能像一般的方法那样被直接调用,它是在构造类的实例的时候被,Java,编译器自动调用的。当我们构造一个类的实例的时候,编译器主要完成以下三件事情:,(1),为对象分配内存空间;,(2),初始化对象中的实例变量的值,初始值可以是缺省值,或者变量按指定的值初始化;,(3),调用对象的构造方法。,一个类的构造方法可以有多个,它们都具有相同的方法名,即类名。编译器根据参数的类型来决定调用哪个构造方法。构造方法分为缺省的构造方法(不带参数)和带参数的构造方法。,构造方法说明 每当由类构造对象时都要调用该类特定的构造方法,,26,缺省的构造方法,如果类的定义没有编制构造方法,,Java,语言会自动为用户提供。这个由,Java,自动提供的构造方法就是所谓的缺省构造方法。缺省的构造方法确保每个,Java,类都至少有一个构造方法,该方法应符合类的定义。,例如在例,4-1,的类,Point,中,如果我们没有定义构造方法,则,Java,自动提供了一个缺省的构造方法,如下:,缺省的构造方法:,public Point(),;,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6