第四章面向对象上优秀PPT.ppt

上传人:石*** 文档编号:65760562 上传时间:2022-12-08 格式:PPT 页数:40 大小:1.83MB
返回 下载 相关 举报
第四章面向对象上优秀PPT.ppt_第1页
第1页 / 共40页
第四章面向对象上优秀PPT.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《第四章面向对象上优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第四章面向对象上优秀PPT.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章面向对象上第四章面向对象上第一页,本课件共有40页l什么是抽象 l类与对象及其关系 l类中定义的属性(域)与方法(操作)l对象 l构造方法 l类成员属性和方法的其它修饰符l包(Package)主要内容主要内容第二页,本课件共有40页什么是抽象第三页,本课件共有40页抽象的定义抽象的定义抽象抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简明扼要的认识。动物动物经过人类抽象用一个叫”动物”的类来概括第四页,本课件共有40页类与对象及其关系 类类(Class)是普通数据类型的扩展。类中的数

2、据称为成员变量,类中对数据的操作称为成员方法(method)。成员变量反映类的状态和特征,成员方法反映的是类的行为能力。成员变量和成员方法统称为类的成员(member)。与数据类型相似,类只定义数据及对数据操作的模板,它本身并不真正参与程序运行,实际参与程序运行的是类的对象。第五页,本课件共有40页类与对象及其关系类与对象及其关系 l对象是对客观事物的抽象。l类是对对象的抽象,在语言中是一种抽象的数据类型。l类的定义在Java中可简述为 class 类名 l它们的关系是,对象是类的实例,类是对象的模板。第六页,本课件共有40页类与对象及其关系类与对象及其关系 对象(Object)是类的实例(i

3、nstance)。对象与类的关系就像变量与数据类型的关系一样。类与对象是密切相关的,没有脱离对象的类,也没有不依赖于类的对象。对象是动态的,当程序运行时,对象获得指定类的一个实例,对象占用内存单元。对象使用完后被销毁,所占用的存储单元被释放。参照以下对应关系来理解对象和类类型int,变量i,值10,int i=10类Student,对象s,实例new Student(),Student s=new Student()第七页,本课件共有40页类中定义的属性与方法 第八页,本课件共有40页类中定义的属性(域)与方法(操作)类中定义的属性(域)与方法(操作)类和对象都有属性和操作,属性是事物静态特征

4、的抽象,操作是事物动态特征的抽象。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!”);类的属性或称为“域”类的方法第九页,本课件共有40页类中的域变量和方法存在以下关系类中的域变量和方法存在以下关系1.类中定义的域变量可以被类中所有的方法所访问。2.方法中的形式参数和定义的局部变量的作用域仅限 于方法,局部

5、变量在使用前必须进行赋值初始化。如果局部变量和类中的属性变量重名,则在方法中 对同名变量改变的是局部变量。3.类中定义的方法可以进行递归调用【例4.2】菲波那契数列第十页,本课件共有40页public class Fibonaccipublic static int fseq(int n)if(n1)return-1;/进行参数校验 if(n=1|n=2)return 1;else return fseq(n-1)+fseq(n-2);public static void main(String args)System.out.println(fseq(10);第十一页,本课件共有40页对 象

6、第十二页,本课件共有40页对象的产生对象的产生 NEW类对象对象的产生使用的代码:new FighterPlane();对象的声明使用的代码:FighterPlane fp;第十三页,本课件共有40页NEW类对象可以声明后立即赋予对象:FighterPlane fp =new FighterPlane()第十四页,本课件共有40页对象内存空间分布对象内存空间分布第十五页,本课件共有40页对象作为参数的特点对象作为参数的特点 普通数据类型作为参数传递是值传递,而对象是引用传递。public class X private static int a;public static void main(

7、String args)modify(a);System.out.println(a);public static void modify(int a)a+;本程序的输出为0,因为a+是对形式参数进行自增,而不是对象属性a进行自增。System.out.println(a);System.out.println(a);System.out.println(a);第十六页,本课件共有40页对象的引用传递举例对象的引用传递举例class IntClass int value;public class RunIntClass public static void modifyValue(IntCla

8、ss s,int val)s.value=val;public static void main(String args)IntClass a=new IntClass();modifyValue(a,8);System.out.println(a.value);a对象s对象是引用传递,当对象作为参数传递时,传递的是对象的地址 第十七页,本课件共有40页class IntClass int value;public class RunIntClass public static IntClass getInstance()/在方法中产生对象 IntClass s=new IntClass();

9、s.value=8;return s;/引用返回 public static void main(String args)/调用环境中去使用 IntClass a=getInstance();System.out.println(a.value);对象as第十八页,本课件共有40页对象数组对象数组如:定义一个类型为MyClass,可容纳5个MyClass对象引用的对象数组,每个单元的初始值为null数组对象特点及常用方法数组对象特点及常用方法,见前一章。,见前一章。MyClass s=new MyClass5;for(int i=0;is.length;i+)si=new MyClass();

10、第十九页,本课件共有40页构造方法第二十页,本课件共有40页Java程序中的初始化和清理工作,分别由两个特殊的成员函数来完成,即构造方法和finalize()方法。构造方法主要用于对刚刚创建的对象的成员数据进行初始化。v在类中与类名同名的成员函数叫做构造方法;没有返回值,因为一个类的构造方法返回值应是该类本身;通常声明为公有方法。v当一个新的对象被定义时,其构造函数会被系统自动调用执行。v对象所占的内存空间只用于存放数据成员。构造方法和析构方法构造方法和析构方法第二十一页,本课件共有40页如果程序中未声明,则系统自动产生出一个默认形式的构造方法没有参数,不做任何事情。使用构造函数的优点n构造函

11、数由系统自动调用给对象赋初值,不需要显示调用。因此不会遗忘对对象的初始化构造方法和析构方法构造方法和析构方法第二十二页,本课件共有40页构造方法构造方法n声明构造方法public class Date2 int year,month,day;public Date2(int y,int m,int d)/声明构造方法 /构造方法与包含它的类同名,构造方法返回该类的一个实例 year=y;month=m;day=d;Date2 aday=new Date2(2006,1,28);第二十三页,本课件共有40页构造方法的几点说明构造方法的几点说明n如果一个类没有声明构造方法,则Java会自动为该类生

12、成一个无参数的默认构造方法。n当类声明了一个或多个构造方法时,Java不再自动为该类生成默认构造方法。如有了上一页的声明后,Date2 aday=new Date2()错误。因此,程序员定义构造方法时,最好包含一个参数表为空的构造方法,否则,调用new Name()时会出现编译错误。n因为构造方法的特殊性,它不允许程序员按通常调用方法的方式来调用。n构造方法中参数列表的说明方式就决定了该类实例的创建方式。若需要多种形式来初始化对象的成员数据,可重载构造方法。第二十四页,本课件共有40页n构造方法和成员方法n作用不同:成员方法实现对类中成员变量的操作;构造方法用于创建类的实例并对实例的成员变量进

13、行初始化;n调用方式不同:成员方法通过对象调用;构造方法通过new运算符系统自动调用。第二十五页,本课件共有40页finalize()方法方法nJava的垃圾回收机制自动判断对象是否在使用,并能够自动销毁不再使用的对象,收回对象所占的资源。n程序中也可以使用finalize()随时销毁一个对象。一个类只能有一个该方法,且不允许重载。public void finalize()语句序列;Java 回收该类的一个对象时,就会调用这个方法。在finalize()方法中,要指定在一个对象被撤消前必须执行的操作。垃圾回收周期性地运行,检查对象不再被运行状态引用或间接地通过其他对象引用。就在对象被释放之前

14、,Java 运行系统调用该对象的finalize()方法。finalize()方法可以明确地被调用,但它却不能进行垃圾收集。第二十六页,本课件共有40页类成员属性和方法的其它修饰符第二十七页,本课件共有40页2022/12/62022/12/6JavaJava面向对象程序设计教程面向对象程序设计教程2828基本术语:类变量基本术语:类变量 类变量必须在类体中声明,并且使用关键字类变量必须在类体中声明,并且使用关键字“static”static”,因此也称为静态变量。因此也称为静态变量。类变量在类被加载时完成相应的初始化工作。类变量在类被加载时完成相应的初始化工作。类变量在一个运行系统中只有一份

15、供整个类和实例对象共类变量在一个运行系统中只有一份供整个类和实例对象共享的值,该值有可能被类(及其子类)和它们所创建的实享的值,该值有可能被类(及其子类)和它们所创建的实例改变,每一次的改变都将影响到该类(及其子类)和其例改变,每一次的改变都将影响到该类(及其子类)和其它实例的调用。它实例的调用。类变量的作用域是整个类。类变量的作用域是整个类。第二十八页,本课件共有40页2022/12/62022/12/6JavaJava面向对象程序设计教程面向对象程序设计教程2929基本术语:实例变量基本术语:实例变量 实例变量在类体中声明但不使用关键字实例变量在类体中声明但不使用关键字“static”st

16、atic”,也称,也称为非静态变量。为非静态变量。它在对象初始化时完成相应的初始化工作,并由某一个对它在对象初始化时完成相应的初始化工作,并由某一个对象独自拥有。象独自拥有。实例变量的作用域是某一个类具体创建的实例对象。实例变量的作用域是某一个类具体创建的实例对象。第二十九页,本课件共有40页2022/12/62022/12/6JavaJava面向对象程序设计教程面向对象程序设计教程3030基本术语:局部变量基本术语:局部变量 局部变量在某一个语句(如局部变量在某一个语句(如forfor语句)或代码块(如方法体)语句)或代码块(如方法体)中声明。中声明。当该语句或代码块被调用时,每次都将立即创

17、建相关的局当该语句或代码块被调用时,每次都将立即创建相关的局部变量。部变量。在一个局部变量的声明语句中可能包含有用于初始化的表在一个局部变量的声明语句中可能包含有用于初始化的表达式,但是,该表达式一般要等到这条声明语句被执行的达式,但是,该表达式一般要等到这条声明语句被执行的时候才会进行相应的初始化。当该语句或代码块被执行完时候才会进行相应的初始化。当该语句或代码块被执行完毕退出,相应的局部变量也将失效。毕退出,相应的局部变量也将失效。局部变量的作用域是声明该变量的语句或代码块。局部变量的作用域是声明该变量的语句或代码块。第三十页,本课件共有40页2022/12/62022/12/6JavaJ

18、ava面向对象程序设计教程面向对象程序设计教程3131基本术语:参数变量基本术语:参数变量 方法和构造方法用于传递信息的参数(方法和构造方法用于传递信息的参数(ArgumentArgument)变量和)变量和作用于方法体的局部变量相类似,当方法被调用的时候进作用于方法体的局部变量相类似,当方法被调用的时候进行相应的初始化,当方法体执行结束后失效。行相应的初始化,当方法体执行结束后失效。第三十一页,本课件共有40页static 用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个

19、类的任何对象访问它时,存取到的都是相同的数值。访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。第三十二页,本课件共有40页Static修饰的方法有如下特点:static方法是类方法,但可以被所有对象所访问,引用这个方法时,可以使用对象名做前缀,也可以使用类名做前缀。static方法内部的代码,只能访问类中的static属性或方法,不能访问类中的非static属性或方法(因为那是对象方法),但非static方法(对象方法)可以访问static数据成员。main方法是特殊的静态方法,是Application程序入口点,必须写成public static void main(String

20、 args)的形式。第三十三页,本课件共有40页示例示例class Pcstatic double ad=8;public class RunPcpublic static void main(String args)Pc m=new Pc();Pc m1=new Pc();m.ad=0.1;System.out.println(m1=+m1.ad);System.out.println(Pc=+Pc.ad);System.out.println(m=+m.ad);第三十四页,本课件共有40页示例示例public class CountObject private static int i=0

21、;CountObject()i+;public int getI()return i;public static void main(String args)CountObject t=new CountObject();t=new CountObject();System.out.println(t.getI();第三十五页,本课件共有40页静态代码块静态代码块一个类中可以使用不包含在任何方法体中的静态代码块,当类被装载时,静态代码块被执行,且只被执行一次,静态代码块经常用来对类中定义的属性进行初始化。class Test static int value;static value=3;Sy

22、stem.out.println(value=+value);public static void main(String args)程序输出结果为3第三十六页,本课件共有40页final final修饰属性,则属性为常量;如果修饰方法,则方法称为最终方法,在子类当中不能被覆盖(见多态一节),可防止任何继承类修改此方法,保证了程序的安全性和正确性。public Constant static final int OK=0;static final int CANCEL=1;.可以在Constant类中定义一些静态常量,在别的类当中这样来使用:Constant.OK。也可定义对象的属性常量第三十七页,本课件共有40页包(Package)第三十八页,本课件共有40页包包(Package)随着Java的应用,SUN公司的JDK,各系统开发商,以及自己开发的类越来越多,如何对这些类进行有效的组织管理和有效使用,Java的解决办法是“包”。关键字:package第三十九页,本课件共有40页实验实验3 类的设计类的设计类的封装性设计银行账户类使用包具有帐户,密码等基本信息具有登陆校验,存取款等基本操作第四十页,本课件共有40页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁