JAVA语言的类与对象.ppt

上传人:牧羊曲112 文档编号:6510196 上传时间:2023-11-07 格式:PPT 页数:38 大小:233.49KB
返回 下载 相关 举报
JAVA语言的类与对象.ppt_第1页
第1页 / 共38页
JAVA语言的类与对象.ppt_第2页
第2页 / 共38页
JAVA语言的类与对象.ppt_第3页
第3页 / 共38页
JAVA语言的类与对象.ppt_第4页
第4页 / 共38页
JAVA语言的类与对象.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《JAVA语言的类与对象.ppt》由会员分享,可在线阅读,更多相关《JAVA语言的类与对象.ppt(38页珍藏版)》请在三一办公上搜索。

1、1,2,第五章 JAVA语言的类与对象,合肥学院计算机系吴晓琴,3,5.1 类,类描述了具有相同状态(属性)和相同行为(方法)的一组对象。它抽象出一组对象的共性部分。1.Java语言中的类:类是java中的一种重要的复合数据类型,是组成java程序的基本要素。它定义了某一特定类型的所有对象的共同属性和行为。一个类的实现包括两个部分:类声明和类体 1类声明:类的定义格式:class Name/private attributes(定义类的状态或属性)/public constructor/(定义构造方法)/public methods;(定义类的行为或方法)要点:类的定义只是一种模型说明,并不是

2、代表具体的东西(对象)。,4,2.类的定义实体包含属性(变量、数据等)和 方法(过程和函数)。属性-成员数据;方法-成员函数。,5,例4:定义学生类,class Studentprivate String name;/学生姓名private int age;/年龄private int serialNumber;/学号private String subject;/专业private int remove;/班级 String faculty;/系 public void display()void setage(int x),成员数据(属性),成员函数(方法),6,5.2 类的实例创建,1对

3、象:它是具有该类类型的一个特定的个体,是类的一个变量。特点:具有特定的属性和行为,通过对象的成员变量来维护它的属性,通过对象的成员方法,来实现它的行为。声明方式:类名 对象名 如:Watch myWatch;,7,对象的实例化(分配出内存空间):对象名=new 类名();如:myWatch=new Watch();要点:可以将对象的声明与实例化合二为一(Java中的对象只有实例化后,系统才真正创建出它并为它分配出内存空间):Watch myWatch=new Watch();/对象的声明与实例化合二为一 调用对象的成员:对象名.成员名;myWatch.showTime();,8,消息:对象之间

4、相互作用或通讯是依靠消息来实现的;组成:消息的目的对象;消息所传送到的行为;消息的行为产生时所需要的参数 myWatch.setTime(10,30,00);,消息的行为产生时所需要的参数,消息的目的对象,消息所传送到的行为,9,对象的生存期:创建,使用,删除三个阶段。(1)创建对象:声明并实例化(为它分配内存空间)Watch myWatch=new Watch();/声明和实例化合二为一 要点:如定义出带参数的构造函数,也可以watch myWatch=new Watch(10,30,00);/实例化时并初 始化(2)使用对象:利用对象名来操作访问其public型的成员函数或成员数据:myW

5、atch.setTime(10,30,00);,10,要点:由于OOP的数据封装特性,成员数据一般都被隐藏,因而不推荐采用对象直接访问类中的成员数据来改变对象的状态,而是通过对象的public型的成员函数来访问对象的成员数据;利用对象不能访问类中的private成员(myWatch.Hour=10;/错误)。如:myWatch.setTime(10,30,00);,11,(3)对象的删除(清除);A、当对象失除其作用域时,系统自动在后台清除这些对象;public void myFun()Watch myWatch=new Watch();/此时myWatch对 象将被删除,寿命不可控。,12,

6、B、用户也可强行清除某一对象(将它置为null 即可)public void myFun()Watch myWatch=new Watch();myWatch=null;/此时myWatch对象将被删除,寿命可控。对象之间的相互关系:包含(内嵌)、继承、关联(引用)。,13,2Java语言中的类的一般定义方式一:class 类名 方式二:class 类名extends 父类名 方式三:class 类名 extends 父类名 implenents 接口名,隐含地派生于Object类,指明父类名,指明接口名,14,3构造函数构造函数主要体现在下面几个方面 构造函数名与类名同名 构造函数是无任何返

7、回值类型定义的public型成员函数。class Rectangle public Rectangle()public Rectangle(int x,int y,int w,int h),15,作用:实现对象在实例化时的初始化(将其成员数据赋初值)。Rectangle rectA=new Rectangle();/对象在实例化时未初始化Rectangle rectA=new Rectangle(10,10,200,200);/对象在实例化时初始化 构造函数不能被显式调用例:例:构造函数的可能形式:类中未定义出构造函数时,此时系统中会生成一个缺省的空的构造函数,对象在实例化时将不能初始化它;重

8、载形式(定义出多个同名的构造函数时),从而可以在对象实例化时以多种方式初始化它。,16,class Rectangle public Rectangle()public Rectangle(int x,int y,int w,int h)void fun()public static void main(String args)Rectangle(4,7,2,3);/错误fun();,17,53 类的修饰符:public,abstract,final,缺省末指定共四种类的修饰符1 public 公有类:编程特性:该类可以被本包中或其它包中类成员函数使用。例:编程要求:一个Java包中(源程序中

9、)只允许定义出一个public型的类;并且此时源程序的文件名应与pbulic类的类名同名。编程应用:一般可将Java Application 中的main()函数所在的类或Java Applet中的init()函数所在的类置为public类。,18,MyPublic.java HePublic.javapackage myPackage;package hePackage;import hePackage.*;import myPackage.*;public class MyPublicpublicclass HePublic public void MyFun()public void H

10、eFun()HePublic obj=new HePublic();MyPublic obj=new MyPublic();MyClassTwo two=new MyClassTwo();HeClassTwo two=new HeClassTwo();class MyClassTwoclass HeClassTwo public void MyFunTwo()public void HeFunTwo()MyPublic obj=new MyPublic();HePublic obj=new HePublic();HePublic obj=new HePublic();MyPublic obj=

11、new MyPublic();,19,2abstract 抽象类(没有具体对象的概念类):编程特性:包含有抽象函数(只有函数原型而没有具体函数体定义的成员函数)的类(它定义了所有子类的共同属性与方法集)。编程要求:它一般应是父类并且必须被继承和派生,在派生类中应重写抽象函数;抽象类不能实例化其对象,而应采用其派生类来实例它(此时执行派生类中定义出的成员方法)。抽象类中的成员不能为private成员(成员数据和成员方法)例:,20,abstract class Person public abstract OutObj eatFood(Food Obj);class Chinese extend

12、s Person public OutObj eatFood(Food Obj)class American extends Personpublic OutObj eatFood(Food Obj),21,编程时:Person mem=new Person();/错误Person men=new Chinese();/正确Person women=new American();/正确 编程应用:抽象类主要是为派生类提供功能实现的模型和要求。,22,3 final(定止类,终极类):编程特性:该类不允许再被继承与派生;但其内的成员方法都有函数体定义 编程要求:final不能与abstract组

13、合在一起使用来说明一个类,否则会相互矛盾。,23,编程应用:如果一个类编写的已较丰富,或因为安全性考虑,不希望派生者再对它进行派生以覆盖其特定的成员函数的应用场合(固定的标准功能的类)。4 缺省末指定的类 编程特性:该类只能被其所在的包中其它类使用。class MyClass extends SuperClass 编程应用:不共享的类。,24,5.4类中的成员数据,1.成员数据(属性)定义的一般格式 访问控制 变量的种类 变量的数据类型 变量名;public static int val;2.成员数据的访问控制选项:public,private,protected,private protec

14、ted,default(缺省末定义)public它可被所有形式的类访问(通过各级对象名或在本类和子类)中的成员中访问protected:可以被这个类本身及它的子类(相同包或不同包中的子类)的成员访问;但通过对象来访问时,可以被相同包中的任何形式的类对象来访问,而不能被不同包中的任何形式类对象访问。缺省末指明:可被这个类本身和同一包中的所用其它子类成员访问(但不同包中的子类成员不能访问它,这是与protected的区别);通过对象来访问时,则只能在相同包中的以该类或它的子类对象来访问。private:仅能本类的各个成员函数使用,不能被任何形式的类对象或子类成员使用。,private protec

15、ted:可以被类本身及它的子类(相同包或不同包中的子类)的成员访问;但同一包中非子类排除在外,使成员变量更具有明确继承关系的类,25,A 本包 不同包public 本类成员 子类成员 子类成员 各级对象 各级对象protected 本类成员 子类成员 子类成员 各级对象 缺省末指明 本类成员 不能以任何形式访问它 子类成员(子类成员、各级对象)各级对象private 本类成员 不能以任何形式访问它,26,27,A:所有类,B,D:本类,C:所有子类,E:包中的子类,28,3成员数据的种类:static:静态变量编程应用:它是类的变量(该类的各个对象共享某一相同的属性量的值,如中国人的肤色例);

16、它也可以为一个static对象成员。使用规则:利用“类名.成员名”来访问它。,29,class ChineseString chineseName;/实例变量 static Color chineseSkinColor=Color.yellow;/类变量public Chinese(String Name)chineseName=Name;public static Color getChineseColor()/类方法 return chineseSkinColor;/在类方法中只能访问类变量 public String getChineseName()/实例方法System.out.pri

17、ntln(chineseSkinColor.toString()/访问类变量return chineseName;/访问实例变量,30,final:Java中的常量定义,必须有初值定义(一般将final常量设计为static型,各个对象共享它,同时也节省内存空间)。class MyMath public static final double PI=3.1415926;,31,55类中的成员函数1类中的成员函数定义的一般格式 访问控制函数的种类返回值类型 函数名(形参定义)函数体;2成员函数的访问控制选项:其使用规则类同于成员数据的访问控制选项。3成员函数的种类 static成员函数:当成员函

18、数操作private static 成员数据时,该成员函数应设计为public static成员函数,以便在类外能访问它。要点:区分实例方法与类方法在编程上的不同。,32,实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能对当前对象的实例变量进行操作;实例方法必须由实例对象来调用,而类方法即可以由实例对象来调用,也可以由类名来调用。在实例方法中可以使用 this和super,而在类方法中不能使用 this和super。,33,实例演示如下:Chinese MrZhang=new Chinese(“Zhang Ming”);MrZhang.getChineseName

19、();/实例方法必须由实例对象来调用MrZhang.getChineseColor();/类方法即可以由实例对象来调用Chinese.getChineseColor();/也可以由类名来调用final成员函数:在派生类中不能重写基类中的final成员函数(防止子类对父类中的关键性方法的错误地重定义)。abstract成员函数:类中只有函数原型定义而无函数定义体的成员函数。,34,终结函数:类体中以如下方式定义出的成员函数。class MyClassprotected void finalize()throw throwable/本类的清理任务;super.finalize();/然后应调用父类

20、中的finalize()以清除从父类中继承来的资源,35,作用:实现对象在被清除之前还希望完成某种功能,可将该功能的代码放在终结函数中,运行系统会在对象被清除时自动地调用它。要点:Java中的函数的两种调用形式1 传值拷贝调用:形参为基本类型的数据定义时;void Add(int x,int y)2 传地址的引用调用:形参为复合数据(数组、类、接口)类型定义时。void Add(Object objOne,Object objTwo)/在函数体内可以通过改变形参,从而达到改变实参之目的;,36,作业:P1185.9 5.14 5.19 5.23 补充:定义student类,包括“学号”、“班号”、“姓名”、“性别”、“年龄”,“专业”属性;“获得学号”、“获得班号”、“获得姓名”、“获得性别”、“修改年龄”、“获得专业”、“获得性别”方法。并为student类定义构造函数初始化所有的属性,编写application程序验证这些功能。,37,思考,1 什么是对象?什么是类?2 面向对象编程的特性有哪三个?它们各自又有哪些特性?3 你知道java语言在面向对象编程方面有何独特的特点吗?,38,下课!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号