第四章Java面向对象特性课件.ppt

上传人(卖家):三亚风情 文档编号:3177734 上传时间:2022-07-28 格式:PPT 页数:39 大小:201KB
下载 相关 举报
第四章Java面向对象特性课件.ppt_第1页
第1页 / 共39页
第四章Java面向对象特性课件.ppt_第2页
第2页 / 共39页
第四章Java面向对象特性课件.ppt_第3页
第3页 / 共39页
第四章Java面向对象特性课件.ppt_第4页
第4页 / 共39页
第四章Java面向对象特性课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

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

2、据类型的声明与操作 这些数据的代码声明之间建立紧密联系,这种这些数据的代码声明之间建立紧密联系,这种 联系通常描述为一种抽象数据类型。联系通常描述为一种抽象数据类型。在在Java中,抽象数据类型的概念用类来实现。中,抽象数据类型的概念用类来实现。抽象数据类型抽象数据类型第4章 Java面向对象特性4类和对象类和对象类是特定类型对象的定义,包括:对象包含的类是特定类型对象的定义,包括:对象包含的 数据,对象的创建及对象对自身数据操作的方法。数据,对象的创建及对象对自身数据操作的方法。类是一个模板。类是一个模板。对象是在其类模型基础上构造出的,是具体的对象是在其类模型基础上构造出的,是具体的 实例

3、。实例。第4章 Java面向对象特性5类和对象举例类和对象举例类定义:类定义:class EmpInfoString name;String designation;String department;void print()System.out.println(name+“is”+designation+“at”+department);对象的生成与使用:对象的生成与使用:EmpInfo employee=new EmpInfo();employee.name=“Robert Javaman”;employee.designation=“Manager”;employee.departmen

4、t=“Coffee shop”;employee.print();.第4章 Java面向对象特性6对象生命周期对象生命周期 创建对象创建对象 使用对象使用对象 清除不用的对象清除不用的对象第4章 Java面向对象特性7创建对象创建对象例:例:Point origin_one;origin_one=new Point(23,94);Rectangle rect_one=new Rectangle(origin_one,100,200);Rectangle rect_two=new Rectangle(50,100);创建对象的三个步骤:创建对象的三个步骤:声明声明(Declaration)实例化

5、(实例化(Instantiation)初始化(初始化(Initialization)第4章 Java面向对象特性8对象实例化过程对象实例化过程构造与初始化对象的过程(调用构造与初始化对象的过程(调用new Xxxx():开辟内存空间(变量、方法体代码)及类成员开辟内存空间(变量、方法体代码)及类成员 变量变量的初始化的初始化:数值型:数值型:0;布尔型:布尔型:false;引用型:引用型:null;字符串型:字符串型:null;显式初始化:执行类成员声明时带有的简单显式初始化:执行类成员声明时带有的简单 赋值赋值表达式。表达式。public class Initialized private

6、int x=5;private String name=“Fred”;执行构造函数。执行构造函数。第4章 Java面向对象特性9对象的回收对象的回收垃圾收集机制(垃圾收集机制(garbage collection):):Java运行环境当确定运行环境当确定某个对象不再被使用时,将其删除。某个对象不再被使用时,将其删除。一个对象在没有引用指向它时,可作为垃圾收集。一个对象在没有引用指向它时,可作为垃圾收集。垃圾搜集器:垃圾搜集器:Java运行环境中的垃圾搜集器周期性地释放运行环境中的垃圾搜集器周期性地释放不用对象占用的空间。不用对象占用的空间。第4章 Java面向对象特性10垃圾收集机制垃圾收集

7、机制C+:A*a=new A();A*b=a;A*c=a;Java:A a=new A();A b=a;A c=a;a b c b c(指针悬空)a b c b c/a 使用完,将其删除使用完,将其删除delete a;/a 使用完,将其删除使用完,将其删除 a=null;第4章 Java面向对象特性11类的创建类的创建 第4章 Java面向对象特性12构造方法定义:构造方法定义:public 类名(参数)类名(参数)注意:注意:方法名必须与类名相同。方法名必须与类名相同。不能带返回类型。不能带返回类型。类的构造函数类的构造函数第4章 Java面向对象特性13如果在类定义中无构造函数,如果在类

8、定义中无构造函数,Java在编译时在编译时可缺省加入构造方法。如可缺省加入构造方法。如 public Employee();一旦在类中有一个自己声明的构造函数,则缺省一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到源程序中。的构造函数将不被加到源程序中。缺省构造函数缺省构造函数第4章 Java面向对象特性14类成员方法定义类成员方法定义一般格式:一般格式:()throws 方法是传值的,方法调用不会改变参数的值。方法是传值的,方法调用不会改变参数的值。当对象作为参数时,参数的值是该对象的引用,当对象作为参数时,参数的值是该对象的引用,这时对象的内容可以在方法中改变,但是对象的这时

9、对象的内容可以在方法中改变,但是对象的 引用不会改变。引用不会改变。第4章 Java面向对象特性15举例举例public class PassTestfloat ptValue;public void changeInt(int value)value=55;public void changeStr(String value)value=new String(different“);public void changeObjValue(PassTest ref)ref.ptValue=99.0f;public static void main(String args )String str;

10、int val;PassTest pt=new PassTest();val=11;pt.changeInt(val);System.out.println(“Int value is:”+val);str=new String(“hello”);pt.changeStr(str);System.out.println(“str value is:”+str);pt.ptvalue=101.0f;pt.changeObjValue(pt);System.out.println(“pt value is:”+pt.ptValue);结果:结果:Int Value is:11Str Value i

11、s:hellopt value is:99.0f第4章 Java面向对象特性16数据隐藏与封装数据隐藏与封装数据隐藏:使用数据隐藏:使用private定义的成员变量,只能定义的成员变量,只能 在成员方法中使用,其它方法中禁止使用。在成员方法中使用,其它方法中禁止使用。优点:优点:保证对象中数据的一致性。保证对象中数据的一致性。封装:基本数据和对数据进行的操作方法的结合。封装:基本数据和对数据进行的操作方法的结合。优点:优点:隐藏类中具体实现的细节。隐藏类中具体实现的细节。强迫程序员使用统一的接口访问数据。强迫程序员使用统一的接口访问数据。使代码可维护性好。使代码可维护性好。第4章 Java面向

12、对象特性17数据隐藏与封装举例数据隐藏与封装举例class Dateprivate int day,month,year;void setDate(int a,int b,int c)day=a;month=b;year=c;Date d1;d1=new Date();d1.setDate(30,9,2001);.d1.day=30;(错误!)错误!)第4章 Java面向对象特性18“this“引用引用关键字关键字this 用来指向当前对象本身。用来指向当前对象本身。例:例:class Date private int day,month,year;public Date getTommorr

13、ow()this.day+;第4章 Java面向对象特性19重载(重载(Overloading)含义:在同一个类中一个方法名被用来定义多个含义:在同一个类中一个方法名被用来定义多个 方法。方法。classScreen public void print(int i)public void print(float i)public void print(String str)重载必须遵守原则:重载必须遵守原则:参数表必须不同,以此区分不同方法体。参数表必须不同,以此区分不同方法体。返回类型、修饰符可相同或不相同。返回类型、修饰符可相同或不相同。第4章 Java面向对象特性20激活重载的构造函数激

14、活重载的构造函数在一个构造函数中可以利用另一个构造函数。在一个构造函数中可以利用另一个构造函数。class Employeeprivate String name;private int salary;public Employee(String n,int s)name=n;salary=s;public Employee(String n)this(n,0);public Employee()this(“Unknown”);第4章 Java面向对象特性21子类子类子类表示类之间一种子类表示类之间一种“属于属于”(is a)关系。关系。例:例:public class Employee St

15、ring name;Date hireDate;Date dateofBirth;String jobTitle;int grade;public class Manager String name;Date hireDate;Date dateofBirth;String jobTitle;int grade;String department;Employee subordinates;第4章 Java面向对象特性22 Java中用中用 extends 关键字定义子类。关键字定义子类。Extends 关键字关键字public class Employee String name;Date

16、hireDate;Date dateofBirth;String jobTitle;int grade;子类是从已有的类创建新类的一种方法。子类是从已有的类创建新类的一种方法。public class Manager extends Employee String department;Employee subordinates;第4章 Java面向对象特性23子类子类子类继承父类的属性、功能(方法),子类中只子类继承父类的属性、功能(方法),子类中只 需声明特有的东西。需声明特有的东西。带带private 修饰符的属性、方法是不能被继承的。修饰符的属性、方法是不能被继承的。构造函数不能被继承

17、。构造函数不能被继承。在方法中调用构造方法用在方法中调用构造方法用this()。调用父类的构造方法用调用父类的构造方法用super()。-super 指向该关键字所在类的父类。指向该关键字所在类的父类。第4章 Java面向对象特性24构造不同类型数据的集合构造不同类型数据的集合 Java中允许构造如下类型的数组:中允许构造如下类型的数组:Employee staff=new Employee1024;staff0=new Manager();staff1=new Worker();staff2=new Employee();-staff 是由多种类型的对象组成的。是由多种类型的对象组成的。Ja

18、va中任何一个子类的实例都可作为父类的实例中任何一个子类的实例都可作为父类的实例使用,可以调用父类具有的方法。使用,可以调用父类具有的方法。第4章 Java面向对象特性25单继承单继承 Java是单继承的,即只能从一个类继承,是单继承的,即只能从一个类继承,extends后类名只能有一个。后类名只能有一个。单继承的优点:单继承的优点:代码更可靠代码更可靠可以用接口弥补可以用接口弥补 用一个类实现多个接口,达到多继承效果。用一个类实现多个接口,达到多继承效果。第4章 Java面向对象特性26重写(重写(Overriding methods)子类可以改变从父类继承的行为。子类可以改变从父类继承的行

19、为。被重写方法的返回值、方法名、参数列表要被重写方法的返回值、方法名、参数列表要 与父类中的方法完全一样。与父类中的方法完全一样。第4章 Java面向对象特性27Overriding 示例示例public class Stack private Vector items;/code for Stacks methods and constructor not shown /overrides Objects toString method public String toString()int n=items.size();StringBuffer result=new StringBuffe

20、r();result.append();for(int i=0;i n;i+)result.append(items.elementAt(i).toString();if(i n-1)result.append(,);result.append();return result.toString();第4章 Java面向对象特性28方法重写的规则方法重写的规则必须返回与原来方法完全相同的返回值。必须返回与原来方法完全相同的返回值。方法的访问权限不能缩小。方法的访问权限不能缩小。不能抛出新的例外。不能抛出新的例外。第4章 Java面向对象特性29多多 态态An object has only on

21、e form,while a variable is polymorphism,since it can refer to objects of different forms,polymorphism is the ability to have many different forms.第4章 Java面向对象特性30 Java允许父类对象的变量作为子类对象的变量允许父类对象的变量作为子类对象的变量 使用。使用。如:如:Employee e=new Manager();但通过该变量但通过该变量(如如e)只能访问父类的方法,子类只能访问父类的方法,子类特有的部分被隐藏。特有的部分被隐藏。运行

22、时确定使用父类还是子类的方法。运行时确定使用父类还是子类的方法。Employee e=new Manager();e.getDetails();多多 态态第4章 Java面向对象特性31Super关键字关键字Super指向该关键字所在类的父类。指向该关键字所在类的父类。public class Empolyee private String name;private int salary;public String getDetails()return“Name:”+name+“nSalary:”+salary;public class Manager extends Empolyee pri

23、vate String department;public String getDetails()return super.getDetailes()+nDepartment:“+department;第4章 Java面向对象特性32“instanceof”及类型强制转换及类型强制转换 Instanceof 测试对象类型测试对象类型 Empolyee a=new Manager();则则 a instanceof Manager 为为true;类型转换类型转换父类弱、子类强,指向父类的引用不能直接按子类引用,父类弱、子类强,指向父类的引用不能直接按子类引用,必须要强制类型转换后才能作为子类的引

24、用使用。必须要强制类型转换后才能作为子类的引用使用。例:例:public void method(Employee e)if(e instanceof Manager)Manager m=(Manager)e;m.department=“”;第4章 Java面向对象特性33子类对象的初始化子类对象的初始化初始化对象是很结构化的。初始化对象是很结构化的。在对对象初始化时,分三步:在对对象初始化时,分三步:分配空间,并初始化为分配空间,并初始化为“0”值。值。按继承关系从顶向下显式初始化。按继承关系从顶向下显式初始化。按继承关系从顶向下调用构造函数。按继承关系从顶向下调用构造函数。第4章 Java

25、面向对象特性34调用父类构造方法调用父类构造方法缺省是不带参数的构造方法。缺省是不带参数的构造方法。如果需要调用特殊的父类构造方法,则需在如果需要调用特殊的父类构造方法,则需在子类构造方法中第一行通过子类构造方法中第一行通过super()调用。调用。class Employee.public Employee(String n)name=n;class Manager entends Emplyeepublic Manager(String s,String d)super(s);.第4章 Java面向对象特性35Object 及其子类及其子类Object定义了所有对象都需要的状态和定义了所有

26、对象都需要的状态和行为。如对象之间的比较、将对象转换行为。如对象之间的比较、将对象转换为字符串、等待某个条件变量、当某条为字符串、等待某个条件变量、当某条件变量改变时通知相关对象件变量改变时通知相关对象 以及返回对以及返回对象的类。象的类。第4章 Java面向对象特性36在在ObjectObject子类中可以重写的方法:子类中可以重写的方法:cloneclone equalsequalsfinalizefinalize toStringtoString:返回对象的字符串表示,表达的内容因具体的对象而:返回对象的字符串表示,表达的内容因具体的对象而异异 在在ObjectObject子类中不能重写

27、的方法:子类中不能重写的方法:getClassgetClass notifynotify notifyAllnotifyAll waitwait Object 及其子类及其子类第4章 Java面向对象特性37Object的clone方法 aCloneableObject aCloneableObject.clone.clone();();/从已有的对象创从已有的对象创建新的对象建新的对象注意:注意:aCloneableObjectaCloneableObject 必须实现了必须实现了Cloneable接口接口 Object.clone()是是shallow copy 而不是而不是 deep c

28、opy 第4章 Java面向对象特性38public class Stack public class Stack implements Cloneableimplements Cloneable private Vector items;private Vector items;/code for Stacks methods and constructor not showncode for Stacks methods and constructor not shown protected Object clone()protected Object clone()try try Sta

29、ck s=(Stack)super.clone();/clone the stack Stack s=(Stack)super.clone();/clone the stack s.items=(Vector)items.clone();/clone the vector s.items=(Vector)items.clone();/clone the vector return s;/return the clonereturn s;/return the clone catch(CloneNotSupportedException catch(CloneNotSupportedException e)e)Object的clone方法 第4章 Java面向对象特性39Object 的toString方法返回对象的字符串表示,表达的内容因具体的对象而异返回对象的字符串表示,表达的内容因具体的对象而异。例:例:System.out.println(Thread.currentThread().toStringSystem.out.println(Thread.currentThread().toString();();对于对于Integer的对象是所包含的整型数的字符表示。的对象是所包含的整型数的字符表示。

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第四章Java面向对象特性课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|