书签 分享 收藏 举报 版权申诉 / 39
上传文档赚钱

类型Java面向对象特性课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4690212
  • 上传时间:2023-01-01
  • 格式:PPT
  • 页数:39
  • 大小:121.67KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Java面向对象特性课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Java 面向 对象 特性 课件
    资源描述:

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

    2、紧密联系,这种 联系通常描述为一种抽象数据类型。联系通常描述为一种抽象数据类型。在在Java中,抽象数据类型的概念用类来实现。中,抽象数据类型的概念用类来实现。抽象数据类型抽象数据类型3类和对象类和对象类是特定类型对象的定义,包括:对象包含的类是特定类型对象的定义,包括:对象包含的 数据,对象的创建及对象对自身数据操作的方法。数据,对象的创建及对象对自身数据操作的方法。类是一个模板。类是一个模板。对象是在其类模型基础上构造出的,是具体的对象是在其类模型基础上构造出的,是具体的 实例。实例。4类和对象举例类和对象举例类定义:类定义:Class EmpInfoString name;String

    3、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.department=“Coffee shop”;employee.print();.5对象生命周期对象生命周期 创建对象创建对象 使用对象使用对象 清除不用的

    4、对象清除不用的对象6创建对象创建对象例:例: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)实例化(实例化(Instantiation)初始化(初始化(Initialization)7对象实例化过程对象实例化过程构造与初始化对象的过程(调用构造与初始化对象的过程(调用new Xxxx():开辟内

    5、存空间(变量、方法体代码)及类成员开辟内存空间(变量、方法体代码)及类成员 变量变量的初始化的初始化:数值型:数值型:0;布尔型:布尔型:false;引用型:引用型:null;字符串型:字符串型:null;显式初始化:执行类成员声明时带有的简单显式初始化:执行类成员声明时带有的简单 赋值赋值表达式。表达式。public class Initializedprivate int x=5;private String name=“Fred”;执行构造函数。执行构造函数。8对象的回收对象的回收垃圾收集机制(垃圾收集机制(garbage collection):):Java运行环境当确定运行环境当确定

    6、某个对象不再被使用时,将其删除。某个对象不再被使用时,将其删除。一个对象在没有引用指向它时,可作为垃圾收集。一个对象在没有引用指向它时,可作为垃圾收集。垃圾搜集器:垃圾搜集器:Java运行环境中的垃圾搜集器周期性地释放运行环境中的垃圾搜集器周期性地释放不用对象占用的空间。不用对象占用的空间。9垃圾收集机制垃圾收集机制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;10类的类的

    7、创建创建z 11构造方法定义:构造方法定义:public 类名(参数)类名(参数)注意:注意:方法名必须与类名相同。方法名必须与类名相同。不能带返回类型。不能带返回类型。类的类的构造函数构造函数12如果在类定义中无构造函数,如果在类定义中无构造函数,Java在编译时在编译时可缺省加入构造方法。如可缺省加入构造方法。如 public Employee();一旦在类中有一个自己声明的构造函数,则缺省一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到源程序中。的构造函数将不被加到源程序中。缺省构造函数缺省构造函数13类成员方法定义类成员方法定义一般格式:一般格式:()throws 方法是

    8、传值的,方法调用不会改变参数的值。方法是传值的,方法调用不会改变参数的值。当对象作为参数时,参数的值是该对象的引用,当对象作为参数时,参数的值是该对象的引用,这时对象的内容可以在方法中改变,但是对象的这时对象的内容可以在方法中改变,但是对象的 引用不会改变。引用不会改变。14举例举例Public class PassTestfloat ptValue;public void changeInt(int value)value=55;public void changeStr(String value)value=new String(different“);public void change

    9、ObjValue(PassTest ref)ref.ptValue=99.0f;public static void main(String args )String str;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.changeObj

    10、Value(pt);System.out.println(“pt value is:”+pt.ptValue);结果:结果:Int Value is:11Str Value is:hellopt value is:99.0f15数据隐藏与封装数据隐藏与封装数据隐藏:使用数据隐藏:使用private定义的成员变量,只能定义的成员变量,只能 在成员方法中使用,其它方法中禁止使用。在成员方法中使用,其它方法中禁止使用。优点:优点:保证对象中数据的一致性。保证对象中数据的一致性。封装:基本数据和对数据进行的操作方法的结合。封装:基本数据和对数据进行的操作方法的结合。优点:优点:隐藏类中具体实现的细节。

    11、隐藏类中具体实现的细节。强迫程序员使用统一的接口访问数据。强迫程序员使用统一的接口访问数据。使代码可维护性好。使代码可维护性好。16数据隐藏与封装举例数据隐藏与封装举例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;(错误!)错误!)17“this“引用引用关键字关键字this 用来指向当前对象本身。用来指向当前对象本身。例:例:class Date pri

    12、vate int day,month,year;public Date getTommorrow()this.day+;18重载(重载(Overloading)含义:在同一个类中一个方法名被用来定义多个含义:在同一个类中一个方法名被用来定义多个 方法。方法。classScreen public void print(int i)public void print(float i)public void print(String str)重载必须遵守原则:重载必须遵守原则:参数表必须不同,以此区分不同方法体。参数表必须不同,以此区分不同方法体。返回类型、修饰符可相同或不相同。返回类型、修饰符可相

    13、同或不相同。19激活重载的构造函数激活重载的构造函数在一个构造函数中可以利用另一个构造函数。在一个构造函数中可以利用另一个构造函数。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”);20子类子类子类表示类之间一种子类表示类之间一种“属于属于”(is a)关系。关系。例:例:public class Employe

    14、e String 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;21 Java中用中用 extends 关键字定义子类。关键字定义子类。Extends 关键字关键字public class Employee String name;Date hireDate;D

    15、ate dateofBirth;String jobTitle;int grade;子类是从已有的类创建新类的一种方法。子类是从已有的类创建新类的一种方法。public class Manager extends Employee String department;Employee subordinates;22子类子类子类继承父类的属性、功能(方法),子类中只子类继承父类的属性、功能(方法),子类中只 需声明特有的东西。需声明特有的东西。带带private 修饰符的属性、方法是不能被继承的。修饰符的属性、方法是不能被继承的。构造函数不能被继承。构造函数不能被继承。在方法中调用构造方法用在方

    16、法中调用构造方法用this()。调用父类的构造方法用调用父类的构造方法用super()。-super 指向该关键字所在类的父类。指向该关键字所在类的父类。23构造不同类型数据的集合构造不同类型数据的集合 Java中允许构造如下类型的数组:中允许构造如下类型的数组:Employee staff=new Employee1024;staff0=new Manager();staff1=new Worker();staff2=new Employee();-staff 是由多种类型的对象组成的。是由多种类型的对象组成的。Java中任何一个子类的实例都可作为父类的实例中任何一个子类的实例都可作为父类的

    17、实例使用,可以调用父类具有的方法。使用,可以调用父类具有的方法。24单继承单继承 Java是单继承的,即只能从一个类继承,是单继承的,即只能从一个类继承,extends后后类名只能有一个。类名只能有一个。单继承的优点:单继承的优点:代码更可靠代码更可靠可以用接口弥补可以用接口弥补 用一个类实现多个接口,达到多继承效果。用一个类实现多个接口,达到多继承效果。25重写(重写(Overriding methods)子类可以改变从父类继承的行为。子类可以改变从父类继承的行为。被重写方法的返回值、方法名、参数列表要被重写方法的返回值、方法名、参数列表要 与父类中的方法完全一样。与父类中的方法完全一样。2

    18、6Overriding Overriding 示例示例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 StringBuffer();result.append();for(int i=0;i n;i+)result.append(items.elementAt(

    19、i).toString();if(i n-1)result.append(,);result.append();return result.toString();27方法重写的规则方法重写的规则必须返回与原来方法完全相同的返回值。必须返回与原来方法完全相同的返回值。方法的访问权限不能缩小。方法的访问权限不能缩小。不能抛出新的例外。不能抛出新的例外。28多多 态态An object has only one form,while a variable is polymorphism,since it can refer to objects of different forms,polymorp

    20、hism is the ability to have many different forms.29 Java允许父类对象的变量作为子类对象的变量允许父类对象的变量作为子类对象的变量 使用。使用。如:如:Employee e=new Manager();但通过该变量但通过该变量(如如e)只能访问父类的方法,子类只能访问父类的方法,子类特有的部分被隐藏。特有的部分被隐藏。运行时确定使用父类还是子类的方法。运行时确定使用父类还是子类的方法。Employee e=new Manager();e.getDetails();多多 态态30Super关键字关键字Super指向该关键字所在类的父类。指向该

    21、关键字所在类的父类。Public class Empolyee private String name;private int salary;public String getDetails()return“Name:”+name+“nSalary:”+salary;public class Manager extends Empolyee private String department;public String getDetails()return super.getDetailes()+nDepartment:“+department;31“instanceof”及及类型强制转换类型

    22、强制转换 Instanceof 测试对象类型测试对象类型 Empolyee a=new Manager();则则 a instanceof Manager 为为true;类型转换类型转换父类弱、子类强,指向父类的引用不能直接按子类引用,父类弱、子类强,指向父类的引用不能直接按子类引用,必须要强制类型转换后才能作为子类的引用使用。必须要强制类型转换后才能作为子类的引用使用。例:例:public void method(Employee e)if(e instanceof Manager)Manager m=(Manager)e;m.department=“”;32子类对象的初始化子类对象的初始化

    23、初始化对象是很结构化的。初始化对象是很结构化的。在对对象初始化时,分三步:在对对象初始化时,分三步:分配空间,并初始化为分配空间,并初始化为“0”值。值。按继承关系从顶向下显式初始化。按继承关系从顶向下显式初始化。按继承关系从顶向下调用构造函数。按继承关系从顶向下调用构造函数。33调用父类构造方法调用父类构造方法缺省是不带参数的构造方法。缺省是不带参数的构造方法。如果需要调用特殊的父类构造方法,则需在如果需要调用特殊的父类构造方法,则需在子类构造方法中第一行通过子类构造方法中第一行通过super()调用。调用。class Employee.public Employee(String n)na

    24、me=n;class Manager entends Emplyeepublic Manager(String s,String d)super(s);.34Object Object 及其子类及其子类Object定义了所有对象都需要的状态和行定义了所有对象都需要的状态和行为。如对象之间的比较、将对象转换为字为。如对象之间的比较、将对象转换为字符串、等待某个条件变量、当某条件变量符串、等待某个条件变量、当某条件变量改变时通知相关对象改变时通知相关对象 以及返回对象的类。以及返回对象的类。35在在ObjectObject子类中可以重写的方法:子类中可以重写的方法:zcloneclone zequ

    25、alsequalszfinalizefinalize ztoStringtoString:返回对象的字符串表示,表达的内容因具体的对象而异返回对象的字符串表示,表达的内容因具体的对象而异 在在ObjectObject子类中不能重写的方法:子类中不能重写的方法:zgetClassgetClass znotifynotify znotifyAllnotifyAll zwaitwait Object Object 及其子类及其子类36Object的clone方法 aCloneableObjectaCloneableObject.clone();.clone();/从已从已有的对象创建有的对象创建新的

    26、对象新的对象注意:注意:z aCloneableObjectaCloneableObject 必须实现了必须实现了Cloneable接口接口zObject.clone()是是shallow copy 而不是而不是 deep copy 37public class Stack public class Stack implementsimplements Cloneable Cloneable private Vector items;private Vector items;/code for Stacks methods and constructor not showncode for S

    27、tacks methods and constructor not shown protected Object clone()protected Object clone()try try Stack 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

    28、 the clonereturn s;/return the clone catch(catch(CloneNotSupportedExceptionCloneNotSupportedException e)e)Object的clone方法 38Object 的toString方法返回对象的字符串表示,表达的内容因具体的对象而异返回对象的字符串表示,表达的内容因具体的对象而异。例:例:System.out.System.out.printlnprintln(Thread.(Thread.currentThreadcurrentThread().().toStringtoString();();对于对于Integer的对象是所包含的整型数的字符表示。的对象是所包含的整型数的字符表示。Threadmain,5,mainThreadmain,5,main39

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Java面向对象特性课件.ppt
    链接地址:https://www.163wenku.com/p-4690212.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库