第3章类和对象课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第3章类和对象课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 课件
- 资源描述:
-
1、2022-12-161第第3章章 类与对象类与对象2022-12-1623.1 Java语言的类语言的类3.1.1 系统定义的类系统定义的类1、java.*包包(核心包核心包):Applet,AWT,Beans,IO,Lang,Math,Net,SQL,Util等等.2、Javax.*包包:Swing,Securing,Rmi等等3、org.*组织扩展包组织扩展包:CORBA和和XML 用用import 来引入这些包来引入这些包.2022-12-1633.1.2 用户自定义类用户自定义类1、类、对象与对象引用、类、对象与对象引用 (1)类类(class)类是类是Java中的一种重要的复合数据类
2、型,是组成中的一种重要的复合数据类型,是组成Java程序的基本要素,它封装了一类对象的状态和方法,是程序的基本要素,它封装了一类对象的状态和方法,是这一类对象的原型。创建一个新的类,就是创建一个新这一类对象的原型。创建一个新的类,就是创建一个新的数据类型。实例化一个类,就得到该类的一个对象。的数据类型。实例化一个类,就得到该类的一个对象。类类(class)是可以由用户自己定义的引用类型,它是是可以由用户自己定义的引用类型,它是相似对象的软件抽象、创建对象的模板。每一个类都相似对象的软件抽象、创建对象的模板。每一个类都组合了一些能够反映某种类型属性的字段和反映某种组合了一些能够反映某种类型属性的
3、字段和反映某种类型动作的方法。类型动作的方法。2022-12-164 (2)对象对象(Object)对象是一个人、地址、物品、事件、概念、屏幕显示对象是一个人、地址、物品、事件、概念、屏幕显示或者报表,它属于某一个类,对象拥有自己的属性值或者报表,它属于某一个类,对象拥有自己的属性值和方法调用。每一个类都将存在许多相互独立的对象。和方法调用。每一个类都将存在许多相互独立的对象。通常说一个对象是类的一个实例,一个对象的生命周通常说一个对象是类的一个实例,一个对象的生命周期包括声明、创建、使用和清除期包括声明、创建、使用和清除4个状态。个状态。在在Java语言中只能引用对象,无法声明一个直接包语言
4、中只能引用对象,无法声明一个直接包含对象的变量。类的变量实际上只是拥有对象的地址,含对象的变量。类的变量实际上只是拥有对象的地址,而不是拥有对象本身。所有对象总是且只是通过内存而不是拥有对象本身。所有对象总是且只是通过内存引用访问的,这种方式称为间接寻址引用访问的,这种方式称为间接寻址(Indirect addressing)。绝对不可以直接涉及对象,而只能通过一。绝对不可以直接涉及对象,而只能通过一个保留地址的变量访问对象。通常情况下,类类型变个保留地址的变量访问对象。通常情况下,类类型变量称为引用变量,它们并不直接保留对象,只是保留量称为引用变量,它们并不直接保留对象,只是保留对象的地址,
5、通过引用变量即可以得到一个对象。对象的地址,通过引用变量即可以得到一个对象。2022-12-165class Constructor public Constructor()System.out.println(调用构造方法调用构造方法);public class InitConstructor public static void main(String st)new Constructor();2022-12-1662、类的定义、类的定义修饰符修饰符 class 类名称类名称 /开始定义类开始定义类 程序区段程序区段;/定义类的属性与方法定义类的属性与方法/完成类定义完成类定义public
6、abstract|finalclass className extends superclassNameimplements interfaceNameList /property and the method declarations/end of class2022-12-167(1)访问控制权访问控制权public、缺省缺省 一个一个Java源文件中最多只能有一个源文件中最多只能有一个public类,而且文件名必须和类,而且文件名必须和public类的类名相同,类的类名相同,拥有拥有main()方法的类中;其它为辅助类方法的类中;其它为辅助类。(2)修饰符修饰符 abstract 当一个
7、类前加上了当一个类前加上了abstract,表示该类是抽象类,表示该类是抽象类,所谓抽象类的意思是该类必须被继承,本身不实现任何所谓抽象类的意思是该类必须被继承,本身不实现任何实际操作,该类中至少有一个抽象方法;当一个类中,实际操作,该类中至少有一个抽象方法;当一个类中,如果出现了某一个如果出现了某一个abstract的方法,那么这个类的前面也的方法,那么这个类的前面也必须加上必须加上abstract的修饰符。的修饰符。2022-12-168 final final如果一个类上加了如果一个类上加了final这个修饰符,那这个修饰符,那么这个类就不能被任何其他的类所继承,也就是么这个类就不能被任
8、何其他的类所继承,也就是说,这个类绝后了。当不希望某个类被其他类继说,这个类绝后了。当不希望某个类被其他类继承时,就可以将该类标识为承时,就可以将该类标识为final。Java没有限制没有限制public,abstract和和final的次的次序。可以写成序。可以写成public abstract,public final,abstract public或者或者final public(对编译器而言对编译器而言都是一样的都是一样的)。abstract不能与不能与final共同修饰同一类共同修饰同一类2022-12-1692、属性、属性(property或或attribute)属性就是类的成员变
9、量属性就是类的成员变量(member variable)或成或成员数据员数据(member data)(字段或域字段或域(field)。当定义一个属性时,必须在类内定义,并告诉当定义一个属性时,必须在类内定义,并告诉Java这个属性的数据类型是什么这个属性的数据类型是什么?以及存取控制的等级是什么以及存取控制的等级是什么?完成定义后,当程序执行时,计算机才知道要分配多少内完成定义后,当程序执行时,计算机才知道要分配多少内存来存储这个属性,以及哪些对象可以存取此属性。其语存来存储这个属性,以及哪些对象可以存取此属性。其语法如下:法如下:修饰符修饰符 数据类型属性名称;数据类型属性名称;publi
10、c|protected|privatestatic final transient volatile type variableName;2022-12-1610存取等级存取等级 同一类同一类 同一同一package 不同不同package 其它类其它类 子类子类 其它类其它类 子类子类public可可 可可 可可 可可 可可 private 可可 不不可可 不不可可不不可可不不可可protected 可可 可可 可可 不不可可可可 default可可 可可 可可 不不可可不不可可(1)访问控制符访问控制符2022-12-1611 设计类成员访问控制的最常用策略是将所设计类成员访问控制的最常用
11、策略是将所有数据成员声明为私有的,以实现信息隐藏;有数据成员声明为私有的,以实现信息隐藏;将所有方法成员声明为公有的,以供其他程序将所有方法成员声明为公有的,以供其他程序片段使用。这种设计模式的好处是,当一个类片段使用。这种设计模式的好处是,当一个类的属性表示方法发生变化时,只需修改类中一的属性表示方法发生变化时,只需修改类中一些方法成员的方法体代码,只要该类能保持所些方法成员的方法体代码,只要该类能保持所有方法成员的接口及其实现的功能不变,那么有方法成员的接口及其实现的功能不变,那么上述变化就不会影响到使用该类的其他程序。上述变化就不会影响到使用该类的其他程序。2022-12-1612 如果
12、设计的类中有一个数据成员需要对外公开,就如果设计的类中有一个数据成员需要对外公开,就要仔细研究其他程序片段是仅仅需要读取该数据成员要仔细研究其他程序片段是仅仅需要读取该数据成员的值,还是需要修改该数据成员的值。若是前者则仍的值,还是需要修改该数据成员的值。若是前者则仍应将数据成员声明为私有的,然后提供一个返回该数应将数据成员声明为私有的,然后提供一个返回该数据的公有方法成员;若是后者则有两种处理方式:一据的公有方法成员;若是后者则有两种处理方式:一是将数据成员声明为公有,二是将数据成员声明为私是将数据成员声明为公有,二是将数据成员声明为私有并提供一个公有的访问方法和一个公有的修改方法。有并提供
13、一个公有的访问方法和一个公有的修改方法。返回私有数据成员的那些公有方法成员又称返回私有数据成员的那些公有方法成员又称getter方法,因为这些公有方法通常命名为方法,因为这些公有方法通常命名为get()(注注意对布尔类型返回值通常命名为意对布尔类型返回值通常命名为is();修改私有数;修改私有数据成员的那些公有方法成员又称据成员的那些公有方法成员又称setter方法,因为这方法,因为这些方法通常命名为些方法通常命名为set()。2022-12-1613class Person /类名类名private String address;/籍贯籍贯private String name;/姓名姓名p
14、rivate int age;/年龄年龄public String getName()/获取人名获取人名 return name;public int getAge()/获取年龄获取年龄 return age;public void changeName(String new_name)/改名改名 name=new_name;public void incrementAge()/增加增加1岁岁 age+;public void setAge(int new_age)/设置年龄设置年龄 age=new_age;2022-12-1614 public String getAddress()/获取籍
15、贯获取籍贯 return address;public void setAddress(String x)/设置籍贯设置籍贯address=x;public String toString()/读对象信息读对象信息String s=Name:+name+n;s+=Age:+age+n;s+=Address:+address+n;return s;2022-12-1615class Base public int attPublic=50;private int attPrivate=50;public class AccessControl1 public static void main(S
16、tring args)Base A_Base=new Base();System.out.println(“在不同类中存取在不同类中存取 public属性属性);System.out.println(attPublic:+A_Base.attPublic);/输出输出A_Base对象的对象的attPublic属性属性 /System.out.println(attPrivate:“+A_Base.attPrivate);2022-12-1616执行结果:执行结果:在不同类中存取在不同类中存取public属性属性 attPublic:50 注意:访问描述符关键字不能作为方注意:访问描述符关键字不
17、能作为方法的局部变量和参数变量声明的一部分法的局部变量和参数变量声明的一部分2022-12-1617(2)修饰符修饰符 成员变量的声明可以带下面的修饰符成员变量的声明可以带下面的修饰符(modifier)关关键字:键字:final或或volatile,static,transient。final:final:将一个成员变量声明为将一个成员变量声明为finalfinal时,编译时,编译器保证对这个成员变量进行初始化,并且在以后将它器保证对这个成员变量进行初始化,并且在以后将它看做一个常量。编译器可以在程序的字节码上执行内看做一个常量。编译器可以在程序的字节码上执行内部优化,因为它部优化,因为它“
18、知道知道”常量不会发生改变常量不会发生改变(默认情默认情况下,一个成员变量是可读况下,一个成员变量是可读/写的写的)。volatilevolatile用于声明一个共享变量,一般用在多个用于声明一个共享变量,一般用在多个并发线程共享变量时,这样各个线程对变量的访问就并发线程共享变量时,这样各个线程对变量的访问就可以保持一致。可以保持一致。2022-12-1618 static:当一个成员变量被声明为当一个成员变量被声明为static时,声时,声明这个成员变量的类所创建的所有对象共享这个成员明这个成员变量的类所创建的所有对象共享这个成员变量的一个副本。给这个成员变量赋新值会让所有对变量的一个副本。
19、给这个成员变量赋新值会让所有对象象“看到看到”这个新值这个新值(默认情况下,每个对象有自己默认情况下,每个对象有自己的一个成员变量副本的一个成员变量副本)。transient用来声明一个暂时性变量,指示用来声明一个暂时性变量,指示Java虚拟机该变量不属于对象的永久状态,对象存档时不虚拟机该变量不属于对象的永久状态,对象存档时不必保存该变量,而缺省情况下,类中所有变量都是对必保存该变量,而缺省情况下,类中所有变量都是对象永久状态的一部分,当对象被存档时,这些变量必象永久状态的一部分,当对象被存档时,这些变量必须同时保存。须同时保存。注意注意:修饰符关键字不能作为方法的参数变量声明的修饰符关键字
20、不能作为方法的参数变量声明的一部分,而且除了一部分,而且除了final以外,修饰符也不能作为方以外,修饰符也不能作为方法的局部变量声明的一部分。法的局部变量声明的一部分。2022-12-1619public class Account /银行账户银行账户 /银行账户的属性银行账户的属性 private double balance=0;/存款余额存款余额 /向账户中存款,存款金额为向账户中存款,存款金额为amount public void deposit(double amount)balance=balance+amount;/从账户中取款,取款金额为从账户中取款,取款金额为amount;
21、取款成功返回;取款成功返回true,否则返回否则返回false public boolean withdraw(double amount)if(amount=balance)balance=balance-amount;return true;else return false;/查询账户的当前余额查询账户的当前余额 public double getBalance()return balance;2022-12-16203.2 对象的创建与引用对象的创建与引用3.2.1 对象的创建与访问对象成员对象的创建与访问对象成员 创建对象包括三步:创建对象包括三步:对象的声明对象的声明 对象的实例化
22、对象的实例化 对象的初始化对象的初始化2022-12-1621public class TestPerson public static void main(String args)Person p1=new Person();Person p2=new Person();p1.changeName(John);p1.setAge(23);p1.setAddress(江西江西);p1.incrementAge();p2.changeName(Mary Ann);p2.setAge(22);p2.setAddress(北京北京);System.out.println(姓名姓名=+p1.getNa
23、me()+,地址地址=+p1.getAddress();System.out.println(姓名姓名=+p2.getName()+,地址地址=+p2.getAddress();/System.out.println(p1);/System.out.println(p2);2022-12-1622public String toString()toString()方法返回当前对象的字符方法返回当前对象的字符串表示形式,返回的字符串中包括当前串表示形式,返回的字符串中包括当前对象对应的类名、一个对象对应的类名、一个符号和一个该符号和一个该对象的对象的hash码的无符号十六进制描述码的无符号十六进
24、制描述(Java赋予当前对象的标识码赋予当前对象的标识码)。希望用户开发类都重载希望用户开发类都重载toString()方方法使其返回能反映当前对象特点的字符法使其返回能反映当前对象特点的字符串串2022-12-16233.2.2 对象的初始化和构造方法对象的初始化和构造方法1、默认值:默认值:定义属性时没有指定初始值,则系统自动指定初值。定义属性时没有指定初始值,则系统自动指定初值。2、定义属性成员时指定初值。定义属性成员时指定初值。3、用代码块设置初始化值用代码块设置初始化值4、使用构造方法给对象初始化使用构造方法给对象初始化2022-12-16241、定义属性时没有指定初始值、定义属性时
25、没有指定初始值 使用默认值使用默认值class Course /Course是课程类名是课程类名/定义成员变量定义成员变量private int cNumber;/课程编号课程编号private String cName;/课程名课程名private int cUnit;/学分数学分数/定义成员方法定义成员方法void setCNumber(int Number)/成员方法成员方法setCNumbercNumber=Number;int getCNumber()/成员方法成员方法getCNumberreturn cNumber;void setCName(String Name)/成员方法成员
展开阅读全文