Java面向对象特性课件

PPT
  • 阅读 38 次
  • 下载 0 次
  • 页数 39 页
  • 大小 178.001 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
Java面向对象特性课件
可在后台配置第一页与第二页中间广告代码
Java面向对象特性课件
可在后台配置第二页与第三页中间广告代码
Java面向对象特性课件
可在后台配置第三页与第四页中间广告代码
Java面向对象特性课件
Java面向对象特性课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 39
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】Java面向对象特性课件.ppt,共(39)页,178.001 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44836.html

以下为本文档部分文字说明:

1第四章Java面向对象特性对象与类对象生命周期类的创建重载子类2对象的基本概念面向对象程序语言三个关键特点:封装(Encapsulation)多态(Polymorphism)继承(Inheritance)3基本数据类型和聚集类型的变量与一些操作(如+,-)之间不需特殊的

联系。在面向对象语言中,在数据类型的声明与操作这些数据的代码声明之间建立紧密联系,这种联系通常描述为一种抽象数据类型。在Java中,抽象数据类型的概念用类来实现。抽象数据类型4类和对象类是特定类型对象的定义,包括:对象包含的数据,对象的创建及对象对自身数据操作的

方法。类是一个模板。对象是在其类模型基础上构造出的,是具体的实例。5类和对象举例类定义:ClassEmpInfo{Stringname;Stringdesignation;Stringdepartment;voidprint(){System.out.println

(name+“is”+designation+“at”+department);}}对象的生成与使用:…EmpInfoemployee=newEmpInfo();employee.name=“RobertJavaman”;employee.designation=“Mana

ger”;employee.department=“Coffeeshop”;employee.print();...6对象生命周期创建对象使用对象清除不用的对象7创建对象例:Pointorigin_one;origin_one=newPoint(23,9

4);Rectanglerect_one=newRectangle(origin_one,100,200);Rectanglerect_two=newRectangle(50,100);创建对象的三个步骤:声明(Declaration)实

例化(Instantiation)初始化(Initialization)8对象实例化过程构造与初始化对象的过程(调用newXxxx()):开辟内存空间(变量、方法体代码)及类成员变量的初始化:数值型:0;布尔型:false;引用型:null;字符串型:nul

l;显式初始化:执行类成员声明时带有的简单赋值表达式。publicclassInitialized{privateintx=5;privateStringname=“Fred”;…}执行构造函数。9对象的回收垃圾收集机制(garbagecollection):Java

运行环境当确定某个对象不再被使用时,将其删除。一个对象在没有引用指向它时,可作为垃圾收集。垃圾搜集器:Java运行环境中的垃圾搜集器周期性地释放不用对象占用的空间。10垃圾收集机制C++:A*a=newA();A*b=a;A*c=a;Java:

Aa=newA();Ab=a;Ac=a;abcbc(指针悬空)abcbc//a使用完,将其删除deletea;//a使用完,将其删除a=null;11类的创建12构造方法定义:public类名(参数){…}注意:•方法名必须与类名相同。•不能带返回类型

。类的构造函数13如果在类定义中无构造函数,Java在编译时可缺省加入构造方法。如publicEmployee(){};一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到源程序中。缺省构造函数14类成员方法定义一般格式:<modifiers><return_type><n

ame>([<argument_list>])[throws<exception>]{<block>}方法是传值的,方法调用不会改变参数的值。当对象作为参数时,参数的值是该对象的引用,这时对象的内容可以在方法中改变,但是对象的引用不会改变。15举例PublicclassPassTest{f

loatptValue;publicvoidchangeInt(intvalue){value=55;}publicvoidchangeStr(Stringvalue){value=newString(dif

ferent“);}publicvoidchangeObjValue(PassTestref){ref.ptValue=99.0f;}publicstaticvoidmain(Stringargs[]){Stringst

r;intval;PassTestpt=newPassTest();val=11;pt.changeInt(val);System.out.println(“Intvalueis:”+val);str=newString(“hello”);pt.changeStr(str);Sys

tem.out.println(“strvalueis:”+str);pt.ptvalue=101.0f;pt.changeObjValue(pt);System.out.println(“ptvalueis:”+pt.ptValue);}}结果:IntValueis:11StrVa

lueis:helloptvalueis:99.0f16数据隐藏与封装数据隐藏:使用private定义的成员变量,只能在成员方法中使用,其它方法中禁止使用。优点:保证对象中数据的一致性。封装:基本数据和对数据进行的操作方法的结合。优点:•隐藏类中具体实现的细节。•强迫程序员使用统一的接口访

问数据。•使代码可维护性好。17数据隐藏与封装举例ClassDate{privateintday,month,year;voidsetDate(inta,intb,intc){day=a;month=b;year=c;}}…Dated1;d1.newDate();d1.se

tDate(30,9,2001);...d1.day=30;(错误!)18“this“引用关键字this用来指向当前对象本身。例:classDate{privateintday,month,year;publicDategetTommorrow(){this.day++;…}19重载(

Overloading)含义:在同一个类中一个方法名被用来定义多个方法。classScreen{publicvoidprint(inti){…}publicvoidprint(floati){…}publicvoidpr

int(Stringstr){…}}重载必须遵守原则:•参数表必须不同,以此区分不同方法体。•返回类型、修饰符可相同或不相同。20激活重载的构造函数在一个构造函数中可以利用另一个构造函数。classEmployee{privateStringname;privat

eintsalary;publicEmployee(Stringn,ints){name=n;salary=s;}publicEmployee(Stringn){this(n,0);}publicEmployee(){this(“Unknown”)

;}}21子类子类表示类之间一种“属于”(isa)关系。例:publicclassEmployee{Stringname;DatehireDate;DatedateofBirth;StringjobTitle;intgrade;…}publ

icclassManager{Stringname;DatehireDate;DatedateofBirth;StringjobTitle;intgrade;Stringdepartment;Employee[]subordin

ates;…}22Java中用extends关键字定义子类。Extends关键字publicclassEmployee{Stringname;DatehireDate;DatedateofBirth;StringjobTitle;intgrade;…}子类是从已有的类创建新类的一种方法。pu

blicclassManagerextendsEmployee{Stringdepartment;Employee[]subordinates;}23子类子类继承父类的属性、功能(方法),子类中只需声明特有的东西。带privat

e修饰符的属性、方法是不能被继承的。构造函数不能被继承。在方法中调用构造方法用this()。调用父类的构造方法用super()。--super指向该关键字所在类的父类。24构造不同类型数据的集合Java中允许构造如下类型的

数组:Employee[]staff=newEmployee[1024];staff[0]=newManager();staff[1]=newWorker();staff[2]=newEmployee();…----staff是由多种类型的对象组成的。Java中任何一个子类的实例都可作为父类

的实例使用,可以调用父类具有的方法。25单继承Java是单继承的,即只能从一个类继承,extends后类名只能有一个。单继承的优点:•代码更可靠•可以用接口弥补用一个类实现多个接口,达到多继承效果。26重写(Overridingmethods)子类可以改变从父类继承的行为。被重写方

法的返回值、方法名、参数列表要与父类中的方法完全一样。27Overriding示例publicclassStack{privateVectoritems;//codeforStack'smethodsandconstructornotshown//overridesObject'stoS

tringmethodpublicStringtoString(){intn=items.size();StringBufferresult=newStringBuffer();result.append("[");for(inti=0;i<n;

i++){result.append(items.elementAt(i).toString());if(i<n-1)result.append(",");}result.append("]");returnre

sult.toString();}}28方法重写的规则必须返回与原来方法完全相同的返回值。方法的访问权限不能缩小。不能抛出新的例外。29多态Anobjecthasonlyoneform,whileavariableispolymorphism,sinceitcanrefertoobje

ctsofdifferentforms,polymorphismistheabilitytohavemanydifferentforms.30Java允许父类对象的变量作为子类对象的变量使用。如:Employeee=newMa

nager();但通过该变量(如e)只能访问父类的方法,子类特有的部分被隐藏。运行时确定使用父类还是子类的方法。Employeee=newManager();e.getDetails();多态31Super关键字Super指向该关键字所在类的父类。Publicclass

Empolyee{privateStringname;privateintsalary;publicStringgetDetails(){return“Name:”+name+“\nSalary:”+salary;}}publicclassManagerextendsEmpol

yee{privateStringdepartment;publicStringgetDetails(){returnsuper.getDetailes()+„\nDepartment:“+department;}}32“ins

tanceof”及类型强制转换Instanceof测试对象类型Empolyeea=newManager();则ainstanceofManager为true;类型转换父类弱、子类强,指向父类的引用不能直接

按子类引用,必须要强制类型转换后才能作为子类的引用使用。例:publicvoidmethod(Employeee){if(einstanceofManager){Managerm=(Manager)e;m.department=“…”;…}}33子类对象的初始化初始化对象是很结构化的。在对对象

初始化时,分三步:•分配空间,并初始化为“0”值。•按继承关系从顶向下显式初始化。•按继承关系从顶向下调用构造函数。34调用父类构造方法缺省是不带参数的构造方法。如果需要调用特殊的父类构造方法,则需在子类构造方法中第一行通过super(…)调用。classEmployee{

...publicEmployee(Stringn){name=n;}}classManagerentendsEmplyee{publicManager(Strings,Stringd){super(s);...}}35Ob

ject及其子类Object定义了所有对象都需要的状态和行为。如对象之间的比较、将对象转换为字符串、等待某个条件变量、当某条件变量改变时通知相关对象以及返回对象的类。36在Object子类中可以重写的方法:•clone•equals•finalize•toString:返

回对象的字符串表示,表达的内容因具体的对象而异在Object子类中不能重写的方法:•getClass•notify•notifyAll•waitObject及其子类37Object的clone方法aCloneableObject.clone();//从已有的对象创建

新的对象注意:•aCloneableObject必须实现了Cloneable接口•Object.clone()是shallowcopy而不是deepcopy38publicclassStackimplementsCloneable{privateVectoritems;//codeforStac

k'smethodsandconstructornotshownprotectedObjectclone(){try{Stacks=(Stack)super.clone();//clonethestacks.items=(Vector)

items.clone();//clonethevectorreturns;//returntheclone}catch(CloneNotSupportedExceptione){}}}Object的clone方法39Object的toString方法返回对象的字符串表示,表达的内容因具体的

对象而异。例:System.out.println(Thread.currentThread().toString());对于Integer的对象是所包含的整型数的字符表示。Thread[main,5,main]

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?