2013Java程序设计-6-对象和类.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2013Java程序设计-6-对象和类.ppt》由会员分享,可在线阅读,更多相关《2013Java程序设计-6-对象和类.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JavaJava程序设计程序设计第六章:类和对象第六章:类和对象1Java程序设计学习目标学习目标:理解理解类和和对象的概念及两者象的概念及两者间的区的区别掌握掌握类的定的定义以及以及类之之间的关系描述,的关系描述,认识对应的的UML基本基本图示示理解构造方法的作用,能理解构造方法的作用,能够使用使用new运算符运算符实例化一个例化一个对象象理解理解对象的引用,掌握通象的引用,掌握通过变量名量名访问引用引用对象的成象的成员变量和方法量和方法理解并掌握理解并掌握变量的作用域量的作用域理解关理解关键字字this的用法的用法掌握掌握static的作用的作用理解并掌握方法的声明和理解并掌握方法的声明和
2、调用用理解包的概念并掌握包的作用理解包的概念并掌握包的作用2Java程序设计6.1.1 6.1.1 面向对象的基本概念面向对象的基本概念什么是什么是对象象u在面向对象的方法学中,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示。u对象的最主要特点是以数据为中心,它是一个集成了数据和其上操作的封装。封装隐藏了类的内部实现细节,强制类的使用者通过规定的接口访问对象,提高了代码的可维护性。u对象是具有唯一对象名和固定对外接口的一组属性和操作的集合,用来模拟组成或影响现实世界问题的一个或一组因素。Java程序设计3过程式的程序过程式的程序=算法算法+数据;数据;面向对象的程序面向对象的程序=对象
3、对象+消息。消息。6.1.2 6.1.2 类和对象类和对象 对象象u对象就是组成现实世界的个体,他们之间存在着错综复杂的关系,正是这种关系的存在构成了丰富多彩的世界。面向面向对象的分析象的分析u一些对象具有相似的特征u一些对象之间有相互作用u就是要把这些对象以及对象之间的关系找出来。类u分析这些个体,可以把他们归纳为不同的类型,例如学校里的课程、银行中的业务等。这种利用归纳的方法将个体分类的过程实质上就是面向对象技术中的创建类的过程。类是对一组有相同特性(属性)和相同行为(方法)的对象的抽象。4Java程序设计6.26.2使用使用JDKJDK的类的类表表6-1 JDK的一些包的一些包包包作用作
4、用java.lang包含包含Java语言的基础类,无需用语言的基础类,无需用import加载加载java.lang.reflect提供类和接口,以获取关于类和对象的反射信息提供类和接口,以获取关于类和对象的反射信息java.io通过数据流、序列化和文件系统提供系统输入和输出通过数据流、序列化和文件系统提供系统输入和输出java.text提提供供以以与与自自然然语语言言无无关关的的方方式式来来处处理理文文本本、日日期期、数数字字和和消息的类和接口消息的类和接口java.util包包含含集集合合框框架架、遗遗留留的的 collection 类类、事事件件模模型型、日日期期和和时时间间设设施施、国国
5、际际化化和和各各种种实实用用工工具具类类(字字符符串串标标记记生生成成器器、随机数生成器和位数组)随机数生成器和位数组)java.util.concurrent 在并发编程中很常用的实用工具类在并发编程中很常用的实用工具类提供网络编程的类和接口提供网络编程的类和接口javax.swing提供支持提供支持SwingGUI组件的类。组件的类。java.sql提供有关数据库访问的接口和类提供有关数据库访问的接口和类Java程序设计5实例一:使用实例一:使用MathMath类类Java程序设计6/程序程序6-1:一个利用:一个利用Math类产生随机数的程序类产生随机数的程序public class R
6、andomDemo public static void main(String args)for(int i=0;i10;i+)/利用利用random方法产生一个方法产生一个0.0到到1.0之间的随机数之间的随机数 double r=Math.random();System.out.println(本次产生的随机数是:本次产生的随机数是:+r);实例二:实例二:讨论:doubler=doubler=Math.randomMath.random();();在在应用模式上用模式上和上面的程序有何不同和上面的程序有何不同Java程序设计7/程序6-2:一个窗口程序import javax.swin
7、g.JFrame;public class FrameDemo public static void main(String args)JFrame frm=new JFrame(我的窗口程序);frm.setSize(400,300);frm.setVisible(true);图6-1 变量声明和变量所引用的对象Java程序设计8图6-1 变量声明和变量所引用的对象6.3创建自己的类在在Java语言中,要想表示言中,要想表示对象,首先必象,首先必须有有对象象所属的所属的类存在,无存在,无论这个个类是是J2SDK开开发包提供包提供的、第三方提供的或者就是开的、第三方提供的或者就是开发人人员自己
8、定自己定义的。的。类封装了一封装了一组对象的公共属性和方法象的公共属性和方法Java程序设计96.3.16.3.1类的结构类的结构一个一个类的定的定义10Java程序设计import java.util.Date;public class Student /首先定义该类对象的属性 private String id;private String name;Date birthDate;/定义构造函数,一个类可以有多种构造对象的方法 public Student()./以下开始定义该类对象的方法 public void addAcademicRecord(AcademicRecord ar).6
9、.3.16.3.1类的结构类的结构(cont.)(cont.)类的修的修饰符符class 类名名 extends 父父类名名 implements接口名接口名 修修饰符符 类型型成成员变量量1;修修饰符符 类型型成成员变量量2;static /类初始化初始化块 构造函数构造函数1(参数参数1,参数参数2,)函数体函数体;构造函数构造函数2(参数参数1,参数参数2,)函数体函数体;修修饰符符 类型型成成员方法方法1(参数参数1,参数参数2,)throws 异常列表异常列表 方法体方法体;修修饰符符 类型型成成员方法方法2(参数参数1,参数参数2,)throws 异常列表异常列表 方法体方法体;1
10、1Java程序设计6.3.16.3.1类的结构类的结构(cont.)(cont.)类的表示的表示在UML中符号,+、-分别表示public、private、protected修饰符12Java程序设计6.3.26.3.2声明一个自定义类声明一个自定义类Java程序设计13一些类声明的实例简单类class Student 可被任一其它类访问的类-publicpublic class Student 一个不可被继承的最终类-finalpublic final class Student 一个抽象的类-abstractpublic abstract class Student 一个继承了父类Stud
11、ent的类-extendspublic class Postgraduate extends Student 一个继承了父类Student,并且实现了一个接口的类public class Postgraduate extends Student implements TakeTactics 6.3.36.3.3为类添加成员变量为类添加成员变量属性用于描述属性用于描述对象状象状态(保存(保存对象的信息)象的信息)u访问权限修饰符 类型变量名;u访问权限修饰符 类型变量名=初值;u访问权限修饰符 类型变量名=初值,变量名=初值;14Java程序设计public class Student Stri
12、ng id;public String name;public char gender=M;private Date birthDate;private List academicRecordList;public class Account String id;/一个String类型的账户唯一性表示 private String name;/账户所有人的姓名 private int balance;/用整数表示的该账户的当前余额6.3.36.3.3属性声明属性声明(cont.)(cont.)元素元素必选必选作用作用public|private|protected|default访问控制范围修
13、饰符加上缺省没有任何访问控制范围访问控制范围修饰符加上缺省没有任何访问控制范围修饰符的四种情况,规定了成员变量的可见范围修饰符的四种情况,规定了成员变量的可见范围static声明该变量为类变量,见声明该变量为类变量,见4.4.3一节一节final声明该变量为最终变量,一旦赋值则不可修改声明该变量为最终变量,一旦赋值则不可修改transient标记该变量不被串行化,既变量值不能用于基于标记该变量不被串行化,既变量值不能用于基于socket的网络访问的网络访问volatile一个变量被声明为一个变量被声明为 volatile,表明它可以被异步修改,表明它可以被异步修改,编程时需要注意编程时需要注意
14、type 每个变量必须规定它的类型,可以是基本类型每个变量必须规定它的类型,可以是基本类型(int,float,double等等),也可以是引用类型,也可以是引用类型(某种类,如某种类,如Student,List等等)name变量的名称,要符合标识符的规定,在同一个作用域变量的名称,要符合标识符的规定,在同一个作用域范围内名称不能重复。范围内名称不能重复。15Java程序设计6.3.36.3.3属性声明属性声明(cont.)(cont.)1.访问控制范控制范围修修饰符符u一个类所定义的属性被其他对象访问所加的限制表表6-4 6-4 访问控制范围修饰符可见区域访问控制范围修饰符可见区域名称名称修
15、饰符修饰符类类子类子类包包所有类所有类公共public友好-保护protected私有private 16Java程序设计2 属性的属性的访问u对可直接访问的类属性可以通过“类名.类属性”访问,如System.out,也可通过“对象引用名.类属性名”访问;u对可直接访问的对象属性可以通过“对象引用名.属性名”访问;u在声明类时,一般为那些需要进行存取访问的属性定义对应的getXxx()、setXxx()方法用来对属性的存取访问,而不是直接访问属性值;17Java程序设计public class Student private String name;public String getName(
16、)return this.name;public void setName(String name)封装和信息隐藏问题的提出:如下例:的提出:如下例:public class Person public int age;public String name;客客户端程序可以直接端程序可以直接访问内部的数据:内部的数据:up1.age=-30;/错误的年龄up1.name=“Mike”;18Java程序设计封装和信息隐藏(c.)为了了实现良好的封装性,我良好的封装性,我们通常将通常将类的成的成员变量声明量声明为private,再通,再通过特定的方法来特定的方法来对这个个变量量进行行访问。对一个一
17、个变量的操作,一般都有量的操作,一般都有读取和取和赋值操作,我操作,我们分分别定定义两个方法来两个方法来实现这两种操作,一个是两种操作,一个是getXxx()(Xxx表示要表示要访问的成的成员变量的名字),用来量的名字),用来读取取这个成个成员变量操作,另一个是量操作,另一个是setXxx()用来用来对这个个成成员变量量赋值,可以加一些控制代,可以加一些控制代码,使其合法性。,使其合法性。一个一个类通常就是一个小的模通常就是一个小的模块,让模模块公开必公开必须要要让外外界知道的内容,而界知道的内容,而隐藏其它的内容。我藏其它的内容。我们在在进行程序的行程序的详细设计时,应尽量避免一个模尽量避免
18、一个模块直接修改或操作另一直接修改或操作另一个模个模块的数据,模的数据,模块设计追求追求强内聚(内聚(许多功能尽量在多功能尽量在类的内部独立完成,不的内部独立完成,不让外面干外面干预),弱耦合(提供),弱耦合(提供给外部尽量少的方法外部尽量少的方法调用)。用)。19Java程序设计Java名字空名字空间及及访问规则upublic:任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。uprotected:同一类,同一包可以使用。不同包的类要使用,必须是该类的子类。uprivate:不允许任何其他类存取和调用。u(default,前边没有修饰字的情况):在同一程序包中出
19、现的类才可以直接使用它的数据和方法.20Java程序设计变量作用域量作用域Java程序设计21表表6-5 变量作用域变量作用域位置位置类方类方法法类初始类初始化块化块所有对所有对象象成员方成员方法法代码代码块块备注备注类变量类变量该该类类的的所所有有实例实例成员变量成员变量所所有有成成员员方方法法方法参数方法参数同一方法内同一方法内局部变量局部变量同一代码块同一代码块异异常常捕捕获获参数参数异异常常处处理理块块内内Java程序设计22/程序6-3:变量的作用域public class TestScope int x;public static void main(String args)int
20、 x=12;int q=96;/x和q都可用 int x=3;/错误的定义,Java中不允许有这种嵌套定义 System.out.println(x is+x);System.out.println(q is+q);q=x;/*错误的行,只有x可用,q 超出了作用域范围*/System.out.println(x is+x);public int getX()return x;/返回的是实例的成员变量x的值 6.3.46.3.4为类添加方法为类添加方法方法方法u方法是自包含的有名代码块,并且具有可重用的特性。方法由对象通过调用方法名得到执行,一些方法有某种类型的返回值,一些没有。有返回值的方法
21、通常在表达式中被调用,作为表达式的一部分参与运算;而没有返回值的方法通常在调用语句中被调用,使它完成某种功能。方法方法调用用uSystem.out.println(Welcome!);uint max=Math.max(10,20);23Java程序设计1、方法声明、方法声明修饰符 方法返回类型方法名(类型参数1,类型参数2,)throws 异常列表 方法体;24Java程序设计元素元素必选必选作用作用public|privatepublic|private|protected|defaultprotected|default访问控制范围修饰符加上缺省没有任何访问控制范围修饰符的四种情访问控制
22、范围修饰符加上缺省没有任何访问控制范围修饰符的四种情况,规定了成员方法的可见范围,况,规定了成员方法的可见范围,staticstatic声明该方法为类方法,声明该方法为类方法,finalfinal声明该方法为不可被子类所重写(声明该方法为不可被子类所重写(overriddenoverridden)的最终方法)的最终方法abstractabstract声明该方法为抽象类中的抽象方法,必须在非抽象的子类中实现具体声明该方法为抽象类中的抽象方法,必须在非抽象的子类中实现具体操作操作nativenative该方法被其它语言所实现该方法被其它语言所实现synchronizedsynchronized保证
23、该方法被互斥访问,参见多线程部分保证该方法被互斥访问,参见多线程部分return type return type 该方法的返回值类型,可以是基本数值型,也可以任一引用类型,当该方法的返回值类型,可以是基本数值型,也可以任一引用类型,当没有返回值时,类型声明为没有返回值时,类型声明为voidvoidnamename方法的名称方法的名称(参数列表参数列表)用于接收方法调用时,外界传来的参数,可以没有参数,但用于接收方法调用时,外界传来的参数,可以没有参数,但()()不能不能省略省略,参数之间用逗号隔开,每个参数都必须独立有自己的类型声明参数之间用逗号隔开,每个参数都必须独立有自己的类型声明thr
24、ows throws 异常列表异常列表用逗号隔开的异常列表,参见异常部分用逗号隔开的异常列表,参见异常部分25Java程序设计2、向、向类中添加方法中添加方法u方法要完成什么样的功能。完成何种功能需要对应的数据结构和算法可以实现它,例如上面的取款方法withdraw(),它的功能是将账户的余额减少指定的金额,因此修改代表账户对象余额的成员变量balance。u方法运行是否需要参数。一些方法运行需要调用者传递参数,这个参数被称为“实参”。在方法声明时,为了接收这些实参,就需要事先声明一些参数对应他们。u方法是否有返回值。Java程序设计263.方法方法调用用u调用对象方法的过程很简单,可以直接通
25、过对象名用成员运算符来访问。u没有返回值的方法调用:uSystem.out.println(Welcome!);u有返回值的方法调用:uint max=0;umax=Math.max(10,20);/调用比较最大值的方法,返回其中的最大值u方法调用尤其需要注意方法的:u返回值、方法名,需要调用者提供的参数Java程序设计276.3.4 6.3.4 定义方法定义方法(cont.)(cont.)4.形参和形参和实参参u某些方法在执行时,需要接收一些外部的值,对象在执行这些方法时,就需要把这些值传递到方法代码中,这就需要一个传递的通道。这个通道就是利用声明方法时定义的形式参数列表,如图6-2中的定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2013 Java 程序设计 对象
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内