JAVA面向对象编程基础.ppt

上传人:大米 文档编号:569510217 上传时间:2024-07-30 格式:PPT 页数:73 大小:1.06MB
返回 下载 相关 举报
JAVA面向对象编程基础.ppt_第1页
第1页 / 共73页
JAVA面向对象编程基础.ppt_第2页
第2页 / 共73页
JAVA面向对象编程基础.ppt_第3页
第3页 / 共73页
JAVA面向对象编程基础.ppt_第4页
第4页 / 共73页
JAVA面向对象编程基础.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《JAVA面向对象编程基础.ppt》由会员分享,可在线阅读,更多相关《JAVA面向对象编程基础.ppt(73页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章面向面向对象象编程程目标q理解对象q理解类q理解抽象和封装q理解对象与类之间的关系q掌握包的创建和导入2面向对象编程OOPOOP旨在在计算机程序中模拟现实世界中的概念在 OOP 中,现实世界的所有事物全都被视为对象能够在计算机程序中用类似的实体模拟现实世界中的实体设计和实现软件系统的方法3对象对对对对 象象象象是类的实例面向对象程序设计中用来描述客观事物的程序单位具备某种功能 完成特定任务表示现实世界中的实体“对象是存在的具体实体,具有明确定义的特征和行为。对象是存在的具体实体,具有明确定义的特征和行为。”4对象的示例收银员对象顾客对象顾客姓名:朱丽叶年龄:28操作:购买商品特征特

2、征姓名:布兰尼年龄:35职务:收银员操作:收款打印帐单行为行为5类q类是面向对象程序设计的基础和核心q类是对象的抽象和归纳,是对象的模板水果类水果类动物类动物类汽车类汽车类类的示例类的示例“类是具有相同属性和方法的一组对象的集合类是具有相同属性和方法的一组对象的集合”6类和对象的示例雇员雇员收银员系统管理员仓库管理员促销员部门经理7属性q属性名称由类的所有实例共享q事物的特征在类中表示为变量q每个对象的每个属性都拥有其特有的值住址住址姓名姓名属性属性年龄年龄“在类中属性表示对象或实体拥有的特征在类中属性表示对象或实体拥有的特征 ”促销员对象促销员对象8方法方法方法方法方法是是对象行为的实际实现

3、每一个方法确定对象的一种行为或功能“对象执行的操作称为方法。对象执行的操作称为方法。”9方法的示例缝制衣服的步缝制衣服的步骤骤量尺寸量尺寸得到工具得到工具缝衣服缝衣服方法方法缝制衣服裁缝裁缝10类和对象的区别 类是概念模型, 定义对象的所 有特性和所需 的操作对象是类的实例类和对象类和对象类定义对象对象是实际的实体类是对象的抽象类是对象的抽象类是对象的抽象类是对象的抽象所有属于同一个类所有属于同一个类所有属于同一个类所有属于同一个类的对象都具有相同的对象都具有相同的对象都具有相同的对象都具有相同的特性和操作的特性和操作的特性和操作的特性和操作11类与对象的关系示例抽象实例化对象:刘丽静态特征:

4、刘丽女讲师890.00动态特征:授课评职称调工资属性值执行的操作方法名属性名类:教师属性:姓名性别职称工资方法:授课评职称调工资类与对象的关系示例12抽象处理事物复杂性的方法处理事物复杂性的方法处理事物复杂性的方法处理事物复杂性的方法 只关注事物的重要细节,而忽略事物的次要细节。数据抽象:“根据具体的应用抽取出类的相关属性和操作。”13数据抽象的示例属性NameStudentNOSeatNumber方法getName()getStudentNO()Student 类类getSeatNumber()14封装q信息隐藏,隐藏对象的实现细节,不让用户看到q将东西包装在一起,然后以新的完整形式呈现出来

5、q例如例如,两种或多种化学药品组成一个胶囊,两种或多种化学药品组成一个胶囊q将方法和属性一起包装到一个单元中,单元以类的形式将方法和属性一起包装到一个单元中,单元以类的形式实现实现“隐藏属性、方法或实现细节的过程称为封装。隐藏属性、方法或实现细节的过程称为封装。”15封装的示例 3-1采购经理罗杰斯先生大众汽车公司.通用汽车公司.市场经理雪莉女士要求16封装的示例 3-2有选择地提供数据大众汽车公司通用汽车公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本17封装的示例 3-3 实体大众汽车公司实体通用汽

6、车公司Auti Ltd.Buto Ltd.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车的组装方法计算汽车的组装成本计算利润率18封装的特征:封装的特征:(1)在类的定义中设置访问对象属性(数据成员)及方法(成员方法)的权限,限制本类对象及其他类的对象使用的范围。(2)提供一个接口来描述其他对象的使用方法。(3)其他对象不能直接修改本对象所拥有的属性和方法。封装的示例 3-4 191.定义类的一般格式定义类的一般格式(1)系统定义的类,即Java类库

7、,是系统定义好的类,类库是Java语言的重要组成部分。Java类库是一组由它的发明者SUN公司以及其他软件开发商编写好的Java程序模块,每个模块通常对应一种特定的基本功能和任务,且这些模块都是经过严格测试的,因而也总是正确有效的。当自己编写的Java程序需要完成其中某一功能的时候,就可以直接利用这些现成的类库,而不需要一切从头编写,这样不仅可以提高编程效率,也可以保证软件的质量。类的定义20(2)用户自己定义的类。在Java程序中,用户自己定义类的一般格式如下:类的定义语法语法class 类名 类体其中:其中:class 是创建类所使用的关键字,类体包含属性(数据成员)和成员方法的声明。21

8、类的简单定义q类的命名规则:q不能为 Java 中的关键字q不能包含空格或点号“. ”q可以下划线“_”、字母或“$”符号开头class Book String bookName; String authorName; int nopages; boolean available;22类中的方法 4-1方法的定义方法的定义方法的名称参数列表方法的主体方法返回的数据类型23类中的方法 4-2语法: 返回值类型 方法名 (参数列表) 方法体(语句体) 24类中的方法 4-3class Book String bookName; String authorName; int nopages; boo

9、lean available; void isAvailable() if(available = true) System.out.println(有这本书); .方法25 创建对象通常包括声明对象、建立对象和初始化对象三步。 1 1声明对象声明对象 声明对象就是确定对象的名称,并指明该对象所属的类。声明对象的格式如下: 类名 对象名表; 例如:Class_name object_one,object_two;对象的声明262建立对象建立对象建立对象就是用new关键字为对象分配存储空间。只有通过建立对象这一步,才为对象分配内存,使该对象成为类的实例。 建立对象的格式如下:建立对象的格式如下:

10、 对象名=new 构造方法( ); 例如:object_one=newClass_name();object_two=newClass_name();对象的建立273.创建对象的格式如下创建对象的格式如下:类名对象名=new构造方法名();例如:Class_nameobject_one=newClass_name();Class_nameobject_two=newClass_name();其中:new的作用是建立对象,为对象分配存储空间。执行newClass_name()将产生一个Class_name()类的实例(对象)。对象的创建与类名相同28 4.使用对象使用对象一个对象可以有许多属性和

11、多个方法。当一个对象被创建后,这个对象就拥有了自己的数据成员和成员方法,我们可以通过引用对象的成员来使用对象。 对象的数据成员的引用方式如下: 对象名.数据成员名 对象的成员方法的引用方式如下: 对象名.成员方法名(参数表) 对象的使用29示例class Book String bookName; String authorName; int nopages; boolean available; static void isAvailable() if(available = true) System.out.println(“有这本书); Book objBook = new Book()

12、; objBook.isAvailable();.圆点符号30类的严谨定义格式如下:类的严谨定义格式如下:类修饰符class类名extends父类名implements接口列表数据成员成员方法类的严谨定义31访问修饰符 6-1q信息隐藏是 OOP 最重要的功能之一,也是使用访问修饰符的原因。q信息隐藏的原因包括:q对任何实现细节所作的更改不会影响使用该类的代码q防止用户意外删除数据 访问修饰符访问修饰符访问修饰符访问修饰符访问修饰符访问修饰符privateprotectedpublic默认32访问修饰符 6-2该类或非该类均该类或非该类均可访问可访问public只有该类可以访只有该类可以访问问

13、private相同数据包中的相同数据包中的类可以访问类可以访问默认默认该类及其子类的该类及其子类的成员可以访问,成员可以访问,同一个包中的类同一个包中的类也可访问也可访问protected336.1 6.1 类修饰符类修饰符类的修饰符用于说明对它的访问限制,一个类可以没有修饰符,也可以有public、final、abstract等几种不同的修饰符。1无修饰符的情况无修饰符的情况如果一个类前无修饰符,则这个类只能被同一个包里的类使用。Java规定,同一个程序文件中的所有类都在同一个包中。这也就是说,无修饰符的类可以被同一个程序文件中的类使用,但不能被其他程序文件中的其他包中的类使用。类访问修饰符

14、 6-334【示例程序C3_1.java】classAa/无修饰符的类Aainta=45;/Aa类的数据成员apublicclassC3_1/公共类C3_1publicstaticvoidmain(Stringargs)Aaa1=newAa();/类C3_1中创建了一个无修饰符类Aa的对象a1System.out.println(a1.a);352public修饰符修饰符如果一个类的修饰符是public,则这个类是公共类。公共类不但可供它所在包中的其他类使用,也可供其他包中的类使用。在程序中可以用import语句引用其他包中的public类。Java规定,在一个程序文件中,只能定义一个在一个程

15、序文件中,只能定义一个public类类,其余的类可以是无修饰符的类,也可以是用final修饰符定义的最终类,否则编译时会报错。类访问修饰符 6-436【示例程序C3_2.java】classFpC3_2f1=newC3_2();intadd()return(f1.b+f1.c);publicclassC3_2intb=20,c=3;publicstaticvoidmain(Stringargs)Fpp1=newFp();System.out.println(p1.add();运行结果:运行结果:232337 3final修饰符修饰符用用final修修饰饰符符修修饰饰的的类类被被称称为为最最终终

16、类类。最终类是不能被任何其他类所继承的。定义最终类的目的有三:(1)用来完成某种标准功能。将一个类定义为final类,则可以将它的内容、属性和功能固定下来,与它的类名形成稳定的映射关系,从而保证引用这个类时所实现的功能是正确无误的。类访问修饰符 6-538(2)提高程序的可读性。从父类派生子类,再从子类派生子类,使软件变得越来越复杂。而在必要的层次上设置final类,可以提高程序的可读性。(3)提高安全性。病毒的闯入途径之一是在一些处理关键信息的类中派生子类,再用子类去代替原来的类。由于用final修饰符定义的类不能再派生子类,截断了病毒闯入的途径,因而提高了程序的安全性。394abstrac

17、t修饰符修饰符用用abstract修饰符修饰的类称为抽象类修饰符修饰的类称为抽象类。其作用在于将许多有关的类组织在一起,提供一个公共的基类,为派生具体类奠定基础。另外,当一个类中出现一个或多个用abstract修饰符定义的方法时,则必须在这个类的前面加上abstract修饰符,将其定义为抽象类。访问修饰符 6-6405类修饰符使用注意事项类修饰符使用注意事项可以同时使用两个修饰符来修饰一个类,当使用两个修饰符修饰一个类时,这些修饰符之间用空格分开,写在关键字class之前,修饰符的顺序对类的性质没有任何影响。需要注意的是:需要注意的是:一个类可以被修饰为publicabstract,也可以被修

18、饰为publicfinal,但不能被修饰为abstractfinal,这是因为abstract类自身没有对象,需要派生子类后再创建子类的对象,而final类不能派生子类,所以不存在用abstractfinal两个修饰符修饰的类。访问修饰符 6-7411. 无修饰符无修饰符:具有包访问特性。2. public访访问问修修饰饰符符:用public修饰的数据成员称为公有数据成员,使用时危险,通常不使用。3. private访访问问修修饰饰符符:用private修饰的数据成员称为私有数据成员。私有数据成员只能在定义它的类中使用,不能在类外使用,是对类进行封装时使用的主要方法。4. protected访

19、访问问修修饰饰符符:用protected修饰的数据成员可以被该类及其子类的成员访问,同一个包中的类也可访问。主要作用是允许其他包中的子类访问父类。数据成员访问修饰符 6-742class ClassA private int k; private void methodA() System.out.println(“私有方法”); class ClassB void methodB() ClassA a=new ClassA(); a.k=10; / a.methodA(); / 数据成员访问修饰符示例 435. static修饰的静态数据成员修饰的静态数据成员用static修饰符修饰的数据成

20、员不属于任何一个类的具体对象,而是属于类的静态数据成员。其特点如下: (1)(1) 它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。 (2)(2) 可以通过类名加点操作符访问它。 (3)(3) static数据成员仍属于类的作用域,还可以使用public static、privatestatic等进行修饰。修饰符不同,可访问的层次也不同。 数据成员修饰符 6-844classPcstaticdoublead=8;publicclassC3_5publicstaticvoidmain(Stringargs)Pcm=ne

21、wPc();Pcm1=newPc();m.ad=0.2;System.out.println(m1=+m1.ad);System.out.println(Pc=+Pc.ad);System.out.println(m=+m.ad);【示例程序C3_5.java】 对上述(1)和(2)的示例。运行结果:m1=0.2Pc=0.2m=0.2456. final修饰符修饰符:用final修饰符修饰的数据成员称为最终数据成员。最终数据成员可以在声明时进行初始化,也可以通过构造方法赋值,但不能在程序的其他部分赋值,它的值在程序的整个执行过程中是不能改变的。 用final修饰符说明常量时,需要注意: 需要说

22、明常量的数据类型并指出常量的具体值。 数据成员修饰符 6-946classCastaticintn=20;finalintn1;finalintk=40;Ca()n1=+n;publicclassC3_6publicstaticvoidmain(Stringargs)Cam1=newCa();Cam2=newCa();/m1.n1=90;System.out.println(m1.n1=+m1.n1);System.out.println(m1.k=+m1.k); System.out.println(m2.n1=+m2.n1); System.out.println(m2.k=+m2.k);

23、【示例程序示例程序C3_6.java】运行结果: m1.n1=21 m1.k=40 m2.n1=22 m2.k=4047课堂练习1. P76 例3.1048在成员方法头中:在成员方法头中:修饰符可以是公共访问控制符public、私有访问控制符private、保护访问控制符protected等访问权限修饰符,也可以是静态成员方法修饰符static、最终成员方法修饰符final、本地成员方法修饰符native、抽象成员方法修饰符abstract等非访问权限修饰符。访问权限修饰符指出满足什么条件时该成员方法可以被访问。非访问权限修饰符指明数据成员的使用方式。成员方法修饰符49方法修饰符方法修饰符方法

24、修饰符方法修饰符方法修饰符staticfinalabstractnative50static 修饰符 3-1qstatic修饰符修饰的方法叫静态方法。q静态方法是属于整个类的类方法,不用static修饰符限定的方法,是属于某个具体类对象的方法。qstatic方法使用特点如下: (1) static方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载。而非static的方法是属于某个对象的方法,当这个对象创建时,在对象的内存中拥有这个方法的专用代码段。 (2) 引用静态方法时,可以使用对象名做前缀,也可以使用类名做前缀。 51static 修饰符 3-2(3) static方法只能访

25、问static数据成员,不能访问非static数据成员,但非static方法可以访问static数据成员。(4) static方法只能访问static方法,不能访问非static方法,但非static方法可以访问static方法。(5) main方法是静态方法。在Java的每个Application程序中,都必须有且只能有一个main方法,它是Application程序运行的入口点。 52例:classFintd1;staticintd2;voidme()staticvoidme1()staticvoidme2()me1();/合法引用d1=34;/错,引用了非static数据成员me();/

26、错,引用了非static方法d2=45;53final 修饰符2-1 finalfinal不能修改变量不能修改变量子类不能重写方法子类不能重写方法54final修饰的最终方法修饰的最终方法:用final修饰符修饰的方法称为最终方法,如果类的某个方法被final修饰符所限定,则该类的子类就不能覆盖父类的方法,即不能再重新定义与此方法同名的自己的方法,而仅能使用从父类继承来的方法。可见,使用final修饰方法,就是为了给方法“上锁”,防止任何继承类修改此方法,保证了程序的安全性和正确性。final 修饰符2-255 native修饰的本地方法修饰的本地方法:修饰符native修饰的方法称为本地方法

27、,此方法使用的目的是为了将其他语言(例如C、C、FORTRAN、汇编等)嵌入到Java语言中。这样Java可以充分利用已经存在的其他语言的程序功能模块,避免重复编程。native 修饰符56abstract 修饰符 2-1q由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类q抽象方法必须声明在抽象类中q抽象方法语法:abstract 返回值类型 方法名(形式参数列表);q声明抽象类语法: abstract class q抽象方法不具有任何实现代码57abstract 修饰符 2-2 abstractabstract抽象类不能被实例化构造方法 和 static 方法不能是

28、抽象的父类的抽象方法往往在子类中实现 58课堂练习2. P83 例3.1459构造方法q每当创建类的对象时就调用的方法q与类同名,但没有返回类型qJava 为对象分配内存,初始化实例变量并调用构造方法q两种构造方法q参数化构造方法q隐式构造方法60参数化构造方法的示例class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(日期是 + m + / + d + / + y + .); public static void main(St

29、ring args) Sdate S1,S2; S1=new Sdate(5,27,2009); S2=new Sdate(8,8,2008); 参数化构造方法61隐式构造方法的示例class Sdate int month=5; int day=27; int year=2009; public static void main(String args ) Sdate S1; S1=new Sdate(); 隐式构造方法62q1.定义年、月、日三个变量;q2.定义一个构造方法,给三个变量赋初值;q3.定义main方法,输出今天的日期。构造方法练习63在一个方法的定义过程中又调用自身的方法称为

30、递归方法。在一个方法的定义过程中又调用自身的方法称为递归方法。例如:计算例如:计算N!的定义如下!的定义如下1(当N=0时)N!=N*(N-1)!(当N0时)递归方法64图3.5求4!的递归过程4!4*3!3*2!2*1!1*0!递归方法示例65成员方法的递归引用就是指在一个方法中直接或间接引用自身的情况。 例如例如: intf1(intn)intp;p=f1(n-1)returnp;递归方法示例66intf1(intn)intf2(intm)intp;ints;p=f2(n-1);s=f1(m+2);returnp;returns;递归方法示例间接调用67publicclassC3_7sta

31、ticintfac(intn)intfa;if(n=0)fa=1;elsefa=n*fac(n-1);/递归引用自身returnfa;publicstaticvoidmain(Stringargs)intm=4;intf1=fac(m);/引用fac()方法System.out.println(4!=+f1);【示例程序C3_7.java】 编程计算4!的值。68图3.6计算4!的成员方法fac递归引用关系69包q包允许将类组合成较小的单元(类似文件夹),使其易于找到和使用相应的类文件q有助于避免命名冲突。在使用许多类时,类和方法的名称很难决定。有时需要使用与其他类相同的名称。包基本上隐藏了类

32、并避免了名称上的冲突q包允许在更广的范围内保护类、数据和方法,可以在包内定义类,而在包外的代码不能访问该类 “包将类名空间划分为更加容易管理的块, 包既是命名机制也是可见度控制机制 ”70创建包package mypackage;public class Calculate public double volume(double height, double width, double depth) 声明包71导入包import mypackage.Calculate;public class PackageDemo public static void main(String args) Calculate calc=new Calculate( ); 导入包72总结 q对象由状态和行为组成 q类是具有相同属性和行为的一组对象的集合 q封装是隐藏对象实现细节的过程,以便不让用户看到q类的变量和方法可被该类的实例访问q圆点符号用于访问对象的成员q构造函数在创建对象时初始化对象73

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号