JAVA面向对象编程基础ppt课件_第1页
JAVA面向对象编程基础ppt课件_第2页
JAVA面向对象编程基础ppt课件_第3页
JAVA面向对象编程基础ppt课件_第4页
JAVA面向对象编程基础ppt课件_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、员操作:收款打印帐单行为行为类q类是面向对象程序设计的根底和中心q类是对象的笼统和归纳,是对象的模板水果类水果类动物类动物类汽车类汽车类类的例如类的例如“类是具有一样属性和方法的一组对象的集合类是具有一样属性和方法的一组对象的集合类和对象的例如雇员雇员收银员系统管理员仓库管理员促销员部门经理属性q 属性称号由类的一切实例共享q 事物的特征在类中表示为变量q 每个对象的每个属性都拥有其特有的值住址住址姓名姓名属性属性年龄年龄“在类中属性表示对象或实体拥有的特征在类中属性表示对象或实体拥有的特征 促销员对象促销员对象方法是对象行为的实践实现是对象行为的实践实现每一个方法确定对象的一种行为或功能“对

3、象执行的操作称为方法。对象执行的操作称为方法。方法的例如缝制衣服的步缝制衣服的步骤骤量尺寸量尺寸得到工具得到工具缝衣服缝衣服方法方法缝制衣服类和对象的区别 类是概念模型, 定义对象的所 有特性和所需 的操作对象是类的实例类定义对象对象是实践的实体 类与对象的关系例如 笼统实例化对象:刘丽静态特征:刘丽 女 讲师 890.00动态特征:授课 评职称 调工资属性值执行的操作方法名属性名类:教师属性:姓名 性别 职称 工资方法:授课 评职称 调工资类与对象的关系例如笼统 只关注事物的重要细节,而忽略事物的次要细节。数据笼统:“根据详细的运用抽取出类的相关属性和操作。数据笼统的例如属性NameStud

4、entNOSeatNumber方法getName()getStudentNO()Student 类类getSeatNumber()封装q信息隐藏,隐藏对象的实现细节,不让用户看到q将东西包装在一同,然后以新的完好方式呈现出来q例如,两种或多种化学药品组成一个胶囊q将方法和属性一同包装到一个单元中,单元以类的方式实现“隐藏属性、方法或实现细节的过程称为封装。隐藏属性、方法或实现细节的过程称为封装。封装的例如 3-1 采购经理罗杰斯先生群众汽车公司.通用汽车公司.市场经理雪莉女士 要求 封装的例如 3-2有选择地提供数据群众汽车公司通用汽车公司公共号码电子邮箱产品种类私有备件的制造方法备件库存备件

5、的制造本钱公共号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装本钱封装的例如 3-3 实体群众汽车公司实体通用汽车公司 Auti Ltd.Buto Ltd.属性号码电子邮箱产品种类现有存货数量雇员概略所需物料概略属性号码电子邮箱汽车种类汽车规格雇员概略库存概略经销商概略方法接纳订单备件的制造方法计算备件的制造本钱计算利润率方法发出订单汽车的组装方法计算汽车的组装本钱计算利润率封装的特征:封装的特征: (1) 在类的定义中设置访问对象属性在类的定义中设置访问对象属性(数据成员数据成员)及方及方法法(成员方法成员方法)的权限,限制本类对象及其他类的对象的权限,限制本类对象及其他类的对象运用

6、的范围。运用的范围。 (2) 提供一个接口来描画其他对象的运用方法。提供一个接口来描画其他对象的运用方法。 (3) 其他对象不能直接修正本对象所拥有的属性和其他对象不能直接修正本对象所拥有的属性和方法。方法。 封装的例如 3-4 1.定义类的普通格式定义类的普通格式 (1) 系统定义的类,即系统定义的类,即Java类库,是系统定义好的类,类库类库,是系统定义好的类,类库是是Java言语的重要组成部分。言语的重要组成部分。Java类库是一组由它的发明者类库是一组由它的发明者SUN公司以及其他软件开发商编写好的公司以及其他软件开发商编写好的Java程序模块,每个模程序模块,每个模块通常对应一种特定

7、的根本功能和义务,且这些模块都是经过块通常对应一种特定的根本功能和义务,且这些模块都是经过严厉测试的,因此也总是正确有效的。当本人编写的严厉测试的,因此也总是正确有效的。当本人编写的Java程序程序需求完成其中某一功能的时候,就可以直接利用这些现成的类需求完成其中某一功能的时候,就可以直接利用这些现成的类库,而不需求一切从头编写,这样不仅可以提高编程效率,也库,而不需求一切从头编写,这样不仅可以提高编程效率,也可以保证软件的质量。可以保证软件的质量。 类的定义 (2) 用户本人定义的类。 在Java程序中,用户本人定义类的普通格式如下:类的定义语法语法class 类名类名 类体类体其中:其中:

8、class 是创建类所运用的关键字,是创建类所运用的关键字,类体包含属性数据成员和成员方法的声明。类体包含属性数据成员和成员方法的声明。类的简单定义q类的命名规那么:q不能为 Java 中的关键字q不能包含空格或点号“. q可以下划线“_、字母或“$符号开头class Book String bookName; String authorName; int nopages; boolean available;类中的方法 4-1方法的定义方法的定义方法的称号参数列表方法的主体方法前往的数据类型类中的方法 4-2语法: 前往值类型 方法名 (参数列表) 方法体语句体 类中的方法 4-3class

9、 Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(有这本书); .方法 创建对象通常包括声明对象、建立对象和初始化对象三步。 1声明对象 声明对象就是确定对象的称号,并指明该对象所属的类。声明对象的格式如下: 类名 对象名表; 例如:Class_name object_one,object_two;对象的声明 2建立对象 建立对象就是用new关键字为对象分配存储空间。只需经过建立对

10、象这一步,才为对象分配内存,使该对象成为类的实例。 建立对象的格式如下: 对象名=new 构造方法( ); 例如:object_one = new Class_name( ); object_two= new Class_name( ); 对象的建立 3.创建对象的格式如下: 类名 对象名= new 构造方法名( ); 例如:Class_name object_one= new Class_name( ); Class_name object_two= new Class_name( ); 其中:new的作用是建立对象,为对象分配存储空间。执行new Class_name( )将产生一个Cla

11、ss_name( )类的实例(对象)。 对象的创建与类名一样 4.运用对象运用对象 一个对象可以有许多属性和多个方法。当一个对象被一个对象可以有许多属性和多个方法。当一个对象被创建后,这个对象就拥有了本人的数据成员和成员方法,创建后,这个对象就拥有了本人的数据成员和成员方法,我们可以经过援用对象的成员来运用对象。我们可以经过援用对象的成员来运用对象。 对象的数据成员的援用方式如下:对象的数据成员的援用方式如下: 对象名对象名.数据成员名数据成员名 对象的成员方法的援用方式如下:对象的成员方法的援用方式如下: 对象名对象名.成员方法名成员方法名(参数表参数表) 对象的运用例如class Book

12、 String bookName; String authorName; int nopages; boolean available; static void isAvailable() if(available = true) System.out.println(“有这本书); Book objBook = new Book(); objBook.isAvailable();.圆点符号类的严谨定义格式如下:类的严谨定义格式如下: 类修饰符类修饰符 class 类名类名 extends 父类名父类名 implements 接口列表接口列表 数据成员数据成员 成员方法成员方法 类的严谨定义访

13、问修饰符 6-1q信息隐藏是 OOP 最重要的功能之一,也是运用访问修饰符的缘由。q信息隐藏的缘由包括:q对任何实现细节所作的更改不会影响运用该类的代码q防止用户不测删除数据 访问修饰符访问修饰符privateprotectedpublic默许访问修饰符 6-2该类或非该类均该类或非该类均可访问可访问public只需该类可以访只需该类可以访问问private一样数据包中的一样数据包中的类可以访问类可以访问默许默许该类及其子类的该类及其子类的成员可以访问,成员可以访问,同一个包中的类同一个包中的类也可访问也可访问protected6.1 6.1 类修饰符类修饰符 类的修饰符用于阐明对它的访问限制

14、,一类的修饰符用于阐明对它的访问限制,一个类可以没有修饰符,也可以有个类可以没有修饰符,也可以有publicpublic、finalfinal、abstractabstract等几种不同的修饰符。等几种不同的修饰符。 1 1无修饰符的情况无修饰符的情况 假设一个类前无修饰符,那么这个类只能假设一个类前无修饰符,那么这个类只能被同一个包里的类运用。被同一个包里的类运用。JavaJava规定,同一个程序文规定,同一个程序文件中的一切类都在同一个包中。这也就是说,无修件中的一切类都在同一个包中。这也就是说,无修饰符的类可以被同一个程序文件中的类运用,但不饰符的类可以被同一个程序文件中的类运用,但不能

15、被其他程序文件中的其他包中的类运用。能被其他程序文件中的其他包中的类运用。 类访问修饰符 6-3【例如程序C3_1.java】class Aa /无修饰符的类Aa int a=45; /Aa类的数据成员a public class C3_1 /公共类C3_1 public static void main(String args) Aa a1=new Aa( );/类C3_1中创建了一个无修饰符类Aa的对象a1 System.out.println(a1.a); 2public修饰符 假设一个类的修饰符是public,那么这个类是公共类。公共类不但可供它所在包中的其他类运用,也可供其他包中的类

16、运用。在程序中可以用import语句援用其他包中的public类。Java规定,在一个程序文件中,只能定义一个public类,其他的类可以是无修饰符的类,也可以是用final修饰符定义的最终类,否那么编译时会报错。 类访问修饰符 6-4【例如程序C3_2.java】class Fp C3_2 f1=new C3_2( ); int add( ) return(f1.b+f1.c); public class C3_2 int b=20,c=3; public static void main(String args) Fp p1=new Fp( ); System.out.println(p1

17、.add( ); 运转结果:运转结果:2323 3final修饰符修饰符 用用final修饰符修饰的类被称为最终类。最终类是不能被任修饰符修饰的类被称为最终类。最终类是不能被任何其他类所承继的。定义最终类的目的有三:何其他类所承继的。定义最终类的目的有三: (1) 用来完成某种规范功能。将一个类定义为用来完成某种规范功能。将一个类定义为final类,那类,那么可以将它的内容、属性和功能固定下来,与它的类名构成稳么可以将它的内容、属性和功能固定下来,与它的类名构成稳定的映射关系,从而保证援用这个类时所实现的功能是正确无定的映射关系,从而保证援用这个类时所实现的功能是正确无误的。误的。 类访问修饰

18、符 6-5 (2) 提高程序的可读性。从父类派生子类,再从子类派生子类,使软件变得越来越复杂。而在必要的层次上设置final类,可以提高程序的可读性。 (3) 提高平安性。病毒的闯入途径之一是在一些处置关键信息的类中派生子类,再用子类去替代原来的类。由于用final修饰符定义的类不能再派生子类,截断了病毒闯入的途径,因此提高了程序的平安性。 4abstract修饰符 用abstract修饰符修饰的类称为笼统类。其作用在于将许多有关的类组织在一同,提供一个公共的基类,为派生详细类奠定根底。另外,当一个类中出现一个或多个用abstract修饰符定义的方法时,那么必需在这个类的前面加上abstrac

19、t修饰符,将其定义为笼统类。访问修饰符 6-6 5类修饰符运用本卷须知 可以同时运用两个修饰符来修饰一个类,当运用两个修饰符修饰一个类时,这些修饰符之间用空格分开,写在关键字class之前,修饰符的顺序对类的性质没有任何影响。 需求留意的是:一个类可以被修饰为public abstract,也可以被修饰为public final,但不能被修饰为abstract final,这是由于abstract类本身没有对象,需求派生子类后再创建子类的对象,而final类不能派生子类,所以不存在用abstract final两个修饰符修饰的类。 访问修饰符 6-71. 无修饰符:具有包访问特性。无修饰符:具

20、有包访问特性。2. public访问修饰符:用访问修饰符:用public修饰的数据成员称为公有数据成修饰的数据成员称为公有数据成员,运用时危险,通常不运用。员,运用时危险,通常不运用。3. private访问修饰符:用访问修饰符:用private修饰的数据成员称为私有数据修饰的数据成员称为私有数据成员。私有数据成员只能在定义它的类中运用,不能在类外运成员。私有数据成员只能在定义它的类中运用,不能在类外运用,是对类进展封装时运用的主要方法。用,是对类进展封装时运用的主要方法。4. protected访问修饰符:用访问修饰符:用protected修饰的数据成员可以被该修饰的数据成员可以被该类及其子

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

22、的数据成员不属于任何一个类的详细修饰符修饰的数据成员不属于任何一个类的详细对象,而是属于类的静态数据成员。其特点如下:对象,而是属于类的静态数据成员。其特点如下: (1) 它被保管在类的内存区的公共存储单元中它被保管在类的内存区的公共存储单元中,而不是保管在而不是保管在某个对象的内存区中。因此某个对象的内存区中。因此,一个类的任何对象访问它时,存一个类的任何对象访问它时,存取到的都是一样的数值。取到的都是一样的数值。 (2) 可以经过类名加点操作符访问它。可以经过类名加点操作符访问它。 (3) static数据成员仍属于类的作用域,还可以运用数据成员仍属于类的作用域,还可以运用public s

23、tatic、 private static等进展修饰。修饰符不同,可访问的层次等进展修饰。修饰符不同,可访问的层次也不同。也不同。 数据成员修饰符 6-8class Pc static double ad=8; public class C3_5 public static void main(Stringargs) Pc m=new Pc( ); Pc m1=new Pc( ); m.ad=0.2; System.out.println(m1=+m1.ad); System.out.println(Pc=+Pc.ad); System.out.println(m=+m.ad); 【例如程序C

24、3_5.java】 对上述(1)和(2)的例如。运转结果:m1=0.2 Pc=0.2 m=0.26. final修饰符:用修饰符:用final修饰符修饰的数据成员称为修饰符修饰的数据成员称为最终数据成员。最终数据成员可以在声明时进展最终数据成员。最终数据成员可以在声明时进展初始化,也可以经过构造方法赋值,但不能在程初始化,也可以经过构造方法赋值,但不能在程序的其他部分赋值,它的值在程序的整个执行过序的其他部分赋值,它的值在程序的整个执行过程中是不能改动的。程中是不能改动的。 用用final修饰符阐明常量时,需求留意:修饰符阐明常量时,需求留意: 需求阐明常量的数据类型并指出常量的详细值。需求阐

25、明常量的数据类型并指出常量的详细值。 数据成员修饰符 6-9class Ca static int n=20; final int n1; final int k=40; Ca( ) n1= +n; public class C3_6 public static void main(String args) Ca m1=new Ca( ); Ca m2=new Ca( ); / m1.n1=90; System.out.println(m1.n1=+m1.n1); System.out.println(m1.k=+m1.k); System.out.println(m2.n1=+m2.n1);

26、 System.out.println(m2.k=+m2.k); 【例如程序【例如程序C3_6.java】运转结果: m1.n1=21 m1.k=40 m2.n1=22 m2.k=40课堂练习1. P76 例3.10 在成员方法头中: 修饰符可以是公共访问控制符public、私有访问控制符private、维护访问控制符protected等访问权限修饰符,也可以是静态成员方法修饰符static、最终成员方法修饰符final、本地成员方法修饰符native、笼统成员方法修饰符abstract等非访问权限修饰符。访问权限修饰符指出满足什么条件时该成员方法可以被访问。非访问权限修饰符指明数据成员的运用

27、方式。 成员方法修饰符方法修饰符staticfinalabstractnativestatic 修饰符 3-1qstatic修饰符修饰的方法叫静态方法。q静态方法是属于整个类的类方法,不用static修饰符限定的方法,是属于某个详细类对象的方法。qstatic方法运用特点如下:q (1) static方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载。而非static的方法是属于某个对象的方法,当这个对象创建时,在对象的内存中拥有这个方法的公用代码段。q (2) 援用静态方法时,可以运用对象名做前缀,也可以运用类名做前缀。 static 修饰符 3-2(3) static方法只能

28、访问static数据成员,不能访问非static数据成员,但非static方法可以访问static数据成员。(4) static方法只能访问static方法,不能访问非static方法,但非static方法可以访问static方法。(5) main方法是静态方法。在Java的每个Application程序中,都必需有且只能有一个main方法,它是Application程序运转的入口点。 例:class F int d1; static int d2; void me( ) static void me1( ) static void me2( ) me1( ); /合法援用 d1=34; /错

29、,援用了非static数据成员 me( ); /错,援用了非static方法 d2=45; final 修饰符2-1 不能修正变量不能修正变量子类不能重写方法子类不能重写方法final修饰的最终方法修饰的最终方法: 用用final修饰符修饰的方法称为最终方法,假设类的某个方修饰符修饰的方法称为最终方法,假设类的某个方法被法被final修饰符所限定,那么该类的子类就不能覆盖父类的修饰符所限定,那么该类的子类就不能覆盖父类的方法,即不能再重新定义与此方法同名的本人的方法,而仅方法,即不能再重新定义与此方法同名的本人的方法,而仅能运用从父类承继来的方法。可见,运用能运用从父类承继来的方法。可见,运用

30、final修饰方法,就修饰方法,就是为了给方法是为了给方法“上锁,防止任何承继类修正此方法,保证上锁,防止任何承继类修正此方法,保证了程序的平安性和正确性。了程序的平安性和正确性。 final 修饰符2-2 native修饰的本地方法修饰的本地方法: 修饰符修饰符native修饰的方法称为本地方法,此方法运用的目修饰的方法称为本地方法,此方法运用的目的是为了将其他言语的是为了将其他言语(例如例如C、C、FORTRAN、汇编等、汇编等)嵌嵌入到入到Java言语中。这样言语中。这样Java可以充分利用曾经存在的其他言语可以充分利用曾经存在的其他言语的程序功能模块,防止反复编程。的程序功能模块,防止

31、反复编程。 native 修饰符abstract 修饰符 2-1q由abstract修饰的方法叫笼统方法;由abstract修饰的类叫笼统类q笼统方法必需声明在笼统类中q笼统方法语法:qabstract 前往值类型 方法名(方式参数列表);q声明笼统类语法:q abstract class q笼统方法不具有任何实现代码abstract 修饰符 2-2 笼统类不能被实例化构造方法 和 static 方法不能是笼统的父类的笼统方法往往在子类中实现 课堂练习2. P83 例3.14构造方法q每当创建类的对象时就调用的方法q与类同名,但没有前往类型qJava 为对象分配内存,初始化实例变量并调用构造方

32、法q两种构造方法q参数化构造方法q隐式构造方法参数化构造方法的例如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(String args) Sdate S1,S2; S1=new Sdate(5,27,2021); S2=new Sdate(8,8,2019); 参数化构造方法隐式构造方法的例如class Sdate int month=5; int day=27; int year=2021; public static void main(String args ) Sdate S1; S1=new Sdate(); 隐式构造方法q1.定义年、月、日三个变量;q2.定义一个构造方法,给三个变量赋初值;q3.定义main方法,输出今天的日期。构造方法练习在一个方法的定义过程中又调用本身的方法称为递归方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论