第5章JAVA语言的类与对象
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16
17
5.3 类的修饰符:public,abstract,final, 缺省末指定共四种类的修饰符 1. public 公有类: ① 编程特性:该类可以被本包中或其它包中类成员 函数使用。 例: ② 编程要求:一个Java包中(源程序中)只允许定 义出一个public型的类;并且此时源程序的文件 名应与pbulic类的类名同名。 ③ 编程应用:一般可将Java Application 中的main() 函数所在的类或Java Applet中的init()函数所在的 类置为public类。
MyPublic.java HePublic.java package myPackage; package hePackage; import hePackage.*; import myPackage.*; public class MyPublic publicclass HePublic { { public void MyFun() public void HeFun() { { HePublic obj=new HePublic(); MyPublic 18 obj=new MyPublic();
24
A public
本包 本类成员 子类成员 各级对象
不同包 子类成员 各级对象
protected
本类成员 子类成员 各级对象 本类成员 子类成员 各级对象
本类成员
子类成员
缺省末指明
不能以任何形式访问它 (子类成员、各级对象)
private
不能以任何形式访问它
25
类 属 性 和 方 法 public
10
(3)对象的删除(清除); A、当对象失除其作用域时,系统自动在后台清除这些对象; public void myFun() { Watch myWatch=new Watch( ); //此时myWatch对 象将被删除,寿命不可控。 }
11
B、用户也可强行清除某一对象(将它置为null 即可) public void myFun() { Watch myWatch=new Watch( ); myWatch=null; //此时myWatch对象将被删除, 寿命可控。 } ⑦ 对象之间的相互关系:包含(内嵌)、继承、关联(引 用)。 12
2.Java语言中的类的一般定义
隐含地派生 于Object类
方式一: class 类名 { } 指明父 方式二: class 类名 extends 父类名 { 类名 } 方式三: class 类名 extends 父类名 implenents 接口名{ }
指明接口 名
13
3.构造函数 构造函数主要体现在下面几个方面 ①构造函数名与类名同名 ②构造函数是无任何返回值类型定义的public型成员函数。 class Rectangle { public Rectangle() { } public Rectangle(int x,int y,int w,int h) { } }
28
class Chinese{ String chineseName; //实例变量 static Color chineseSkinColor=Color.yellow; //类变量 public Chinese(String Name) { chineseName=Name; } public static Color getChineseColor() { //类方法 return chineseSkinColor; //在类方法中只能访问类变量 } public String getChineseName() { //实例方法 System.out.println(chineseSkinColor.toString()) //访问类变量 return chineseName; //访问实例变量 } }
19
abstract class Person { public abstract OutObj eatFood(Food Obj); } class Chinese extends Person { public OutObj eatFood(Food Obj) { } } class American extends Person{ public OutObj eatFood(Food Obj) { } 20
⑤ 消息:对象之间相互作用或通讯是依靠消 息来实现的;组成:消息的目的对象;消 息所传送到的行为;消息的行为产生时所 需要的参数 myWatch.setTime(10,30,00);
消 息 的 目 的 对 象
消息所传送 到的行为
消息的行为 产生时所需 要的参数
8
⑥ 对象的生存期:创建,使用,删除三个阶段。 (1)创建对象:声明并实例化(为它分配内存空间) Watch myWatch=new Watch( );//声明和实例化合二为一
编程时: Person mem=new Person(); //错误 Person men=new Chinese(); //正确 Person women=new American(); //正确 ③ 编程应用:抽象类主要是为派生类提供功 能实现的模型和要求。
21
3. final(定止类,终极类): ① 编程特性:该类不允许再被继承与派 生;但其内的成员方法都有函数体定 义 ②编程要求:final不能与abstract 组合在一起使用来说明一个类,否则 会相互矛盾。
15
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(); } }
public
缺省
A
B
protected
缺省
B+C
B B
B
private protected C+D
E+D
private
26
D
D
E:包中的子 类
D:本类
B
C:所有子类
A: 所有类
27
Hale Waihona Puke Baidu
3.成员数据的种类: ①static:静态变量 编程应用:它是类的变量(该类的各个对象共 享某一相同的属性量的值,如中国人的肤色 例);它也可以为一个static对象成员。 使用规则:利用“类名.成员名”来访问它。
2.abstract 抽象类(没有具体对象的概念类): ① 编程特性:包含有抽象函数(只有函数原型而没 有具体函数体定义的成员函数)的类(它定义了 所有子类的共同属性与方法集)。 ② 编程要求: 它一般应是父类并且必须被继承和派生,在派生类 中应重写抽象函数; 抽象类不能实例化其对象,而应采用其派生类来实 例它(此时执行派生类中定义出的成员方法)。 抽象类中的成员不能为private成员(成员数据和成 员方法) 例:
22
③编程应用:如果一个类编写的已较丰富, 或因为安全性考虑,不希望派生者再对它进行 派生以覆盖其特定的成员函数的应用场合(固 定的标准功能的类)。 4. 缺省末指定的类 ① 编程特性:该类只能被其所在的包中其它类 使用。 class MyClass extends SuperClass { } ② 编程应用:不共享的类。
1
第五章 JAVA语言的类与对象
合肥学院计算机系
2
5.1 类
类描述了具有相同状态(属性)和相同行为(方法)的一组 对象。它抽象出一组对象的共性部分。 1 .Java语言中的类:类是java中的一种重要的复合数据类型, 是组成java程序的基本要素。它定义了某一特定类型的所有 对象的共同属性和行为。 一个类的实现包括两个部分:类 声明和类体 1.类声明: 类的定义格式: class Name{ //private attributes(定义类的状态或属性) //public constructor//(定义构造方法) //public methods;(定义类的行为或方法) } 要点:类的定义只是一种模型说明,并不是代表具体的东 3 西(对象)。
要点:如定义出带参数的构造函数,也可以 watch myWatch= new Watch(10,30,00);//实例化时并初 始化 (2)使用对象:利用对象名来操作访问其public型的成员 函数或成员数据: myWatch.setTime(10,30,00); 9
要点:由于OOP的数据封装特性,成员数据一般 都被隐藏,因而不推荐采用对象直接访问类中 的成员数据来改变对象的状态,而是通过对象 的public型的成员函数来访问对象的成员数据; 利 用 对 象 不 能 访 问 类 中 的 private 成 员 (myWatch.Hour=10; //错误)。 如:myWatch.setTime(10,30,00);
23
5.4类中的成员数据
1.成员数据(属性)定义的一般格式 访问控制 变量的种类 变量的数据类型 变量名; public static int val; 2. 成 员 数 据 的 访 问 控 制 选 项 : public ,private ,protected, private protected ,default(缺省末定义) ① public它可被所有形式的类访问(通过各级对象名或在本类和子类)中的 成员中访问 ②protected:可以被这个类本身及它的子类(相同包或不同包中的子类)的成员 访问;但通过对象来访问时,可以被相同包中的任何形式的类对象来访问, 而不能被不同包中的任何形式类对象访问。 ③缺省末指明:可被这个类本身和同一包中的所用其它子类成员访问(但不同包 中的子类成员不能访问它,这是与protected的区别);通过对象来访问时, 则只能在相同包中的以该类或它的子类对象来访问。 ④private:仅能本类的各个成员函数使用,不能被任何形式的类对象或子类成员 使用。 , ⑤ private protected:可以被类本身及它的子类(相同包或不同包中的子类)的 成员访问;但同一包中非子类排除在外,使成员变量更具有明确继承关系的 类
5.2 类的实例创建
1.对象:它是具有该类类型的一个特定的个 体,是类的一个变量。 ① 特点:具有特定的属性和行为,通过对 象的成员变量来维护它的属性,通过对象 的成员方法,来实现它的行为。 ② 声明方式:
6
类名 如:
对象名 Watch myWatch;
③ 对象的实例化(分配出内存空间): 对象名=new 类名(); 如: myWatch=new Watch(); 要点:可以将对象的声明与实例化合二为一 (Java中的对象只有实例化后,系统才真正 创建出它并为它分配出内存空间): Watch myWatch=new Watch(); //对象的声明与实例化合二为一 ④ 调用对象的成员:对象名.成员名; myWatch.showTime(); 7
14
③作用:实现对象在实例化时的初始化(将其成员数据赋初值)。 Rectangle rectA=new Rectangle(); //对象在实例化时未初始化 Rectangle rectA=new Rectangle(10,10,200,200); //对象在实例化时初始化 ④ 构造函数不能被显式调用例: 例: ⑤构造函数的可能形式: 类中未定义出构造函数时,此时系统中会生成一个缺省的空的构造函数,对象在 实例化时将不能初始化它; 重载形式(定义出多个同名的构造函数时),从而可以在对象实例化时以多种方 式初始化它。
2.类的定义实体包含属性(变量、数据等)和 方法(过程和函数)。 属性---成员数据; 方法---成员函数。
4
例4:定义学生类
class Student{ private String name;//学生姓名 private int age;//年龄 private int serialNumber;//学号 private String subject;//专业 成员数据(属性) private int remove;//班级 String faculty;//系 public void display (){ } void setage(int x){ 成员函数(方法) } }5