Java第5章类和对象.ppt
《Java第5章类和对象.ppt》由会员分享,可在线阅读,更多相关《Java第5章类和对象.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三篇 Java语言的面向对象机制第五章 类和对象5.1 5.1 简单的类简单的类简单的类简单的类5.2 5.2 域域域域5.3 5.3 访问控制访问控制访问控制访问控制5.4 5.4 创建对象创建对象创建对象创建对象5.5 5.5 构造与初始化构造与初始化构造与初始化构造与初始化5.6 5.6 方法方法方法方法5.7 this5.7 this引用引用引用引用5.8 5.8 方法的名复用方法的名复用方法的名复用方法的名复用5.9 main5.9 main方法方法方法方法5.10 native5.10 native方法方法方法方法5.11 5.11 小结小结小结小结第五章第五章 类和对象类和对象
2、类:汇集一套类:汇集一套数据数据并并定义定义所有访问、使用和修所有访问、使用和修改这些数据改这些数据的的方法方法。基于基于Java的面向对象设计需严格区别的面向对象设计需严格区别“做什么做什么”与与“怎么做怎么做”,方法的约定规定了当调用一,方法的约定规定了当调用一个对象的方法时将会发生什么。个对象的方法时将会发生什么。5.1 简单的类简单的类方法的约定:方法的基调和语义。方法的约定:方法的基调和语义。方法的约定:方法的基调和语义。方法的约定:方法的基调和语义。做什么做什么设计者设计者怎么做怎么做使用者使用者 类的基本成份:域(数据)和方法(处理数据的代码)。类的基本成份:域(数据)和方法(处
3、理数据的代码)。类的基本成份:域(数据)和方法(处理数据的代码)。类的基本成份:域(数据)和方法(处理数据的代码)。类的三种成员:类的三种成员:类的三种成员:类的三种成员:域域域域(field)(field):与类及其对象相关联的数据变量,以保存类或对象的状态。:与类及其对象相关联的数据变量,以保存类或对象的状态。:与类及其对象相关联的数据变量,以保存类或对象的状态。:与类及其对象相关联的数据变量,以保存类或对象的状态。方法方法方法方法(method)(method):包含类的可执行代码,定义了对象的行为。:包含类的可执行代码,定义了对象的行为。:包含类的可执行代码,定义了对象的行为。:包含类
4、的可执行代码,定义了对象的行为。内嵌类内嵌类内嵌类内嵌类(nested class)(nested class)和内嵌接口和内嵌接口和内嵌接口和内嵌接口(nested interface)(nested interface):在其他类或接口中说明的类:在其他类或接口中说明的类:在其他类或接口中说明的类:在其他类或接口中说明的类或接口。或接口。或接口。或接口。上述类的说明创建了一个类型名,对该类型对象的引用可简单地说明如下:上述类的说明创建了一个类型名,对该类型对象的引用可简单地说明如下:上述类的说明创建了一个类型名,对该类型对象的引用可简单地说明如下:上述类的说明创建了一个类型名,对该类型对象
5、的引用可简单地说明如下:此时此时此时此时mercurymercury引用被初始化为引用被初始化为引用被初始化为引用被初始化为nullnull。在显式地创建对象之前,。在显式地创建对象之前,。在显式地创建对象之前,。在显式地创建对象之前,mercury mercury引用的引用的引用的引用的对象尚未真正存在对象尚未真正存在对象尚未真正存在对象尚未真正存在5.1 简单的类简单的类public class Body public class Body public long idNum;public long idNum;public String nameFor;public String nam
6、eFor;public Body orbits;public Body orbits;public static long nextID=0;public static long nextID=0;/与天体相关的类与天体相关的类与天体相关的类与天体相关的类public class StopLight public class StopLight int RedGreenYellow;int RedGreenYellow;changeLight()changeLight()RedGreenYellow=+RedGreenYellow;RedGreenYellow=+RedGreenYellow;
7、/交通信号类交通信号类交通信号类交通信号类域域方法方法Body mercury;仅说明了一个仅说明了一个Body对象的引用,还没有创建一个对象对象的引用,还没有创建一个对象Body mercury=new Body();mercury引用的对象存在了引用的对象存在了5.1 5.1 简单的类简单的类简单的类简单的类类修饰符(指定类的特殊性质)类修饰符(指定类的特殊性质)类修饰符(指定类的特殊性质)类修饰符(指定类的特殊性质)注意:每个源文件中最多只能有一个注意:每个源文件中最多只能有一个注意:每个源文件中最多只能有一个注意:每个源文件中最多只能有一个publicpublic类。因为类。因为类。因
8、为类。因为JavaJava要求要求要求要求含有含有含有含有publicpublic类的源文件名必须与该类名相同。类的源文件名必须与该类名相同。类的源文件名必须与该类名相同。类的源文件名必须与该类名相同。类中作为成员的变量。类中作为成员的变量。类中作为成员的变量。类中作为成员的变量。与与与与C+C+不同,可对类中的域赋予初始值。不同,可对类中的域赋予初始值。不同,可对类中的域赋予初始值。不同,可对类中的域赋予初始值。对每个对象各自的域赋值,意味着每个对象都有自己独对每个对象各自的域赋值,意味着每个对象都有自己独对每个对象各自的域赋值,意味着每个对象都有自己独对每个对象各自的域赋值,意味着每个对象
9、都有自己独特的状态。除非静态域,否则不同对象间的域不会互相特的状态。除非静态域,否则不同对象间的域不会互相特的状态。除非静态域,否则不同对象间的域不会互相特的状态。除非静态域,否则不同对象间的域不会互相影响。影响。影响。影响。5.2 域域public class Body public long idNum;/唯一地标识一个天体唯一地标识一个天体public String nameFor;/该天体的名字该天体的名字public Body orbits;/该天体围绕着转的其它天体该天体围绕着转的其它天体public static long nextID=0;/后继天体的标识后继天体的标识 5.2
10、 域初始化域初始化 初始化可采用初始化可采用初始化可采用初始化可采用(类型必须正确)(类型必须正确)(类型必须正确)(类型必须正确)常量常量常量常量 域域域域 方法调用方法调用方法调用方法调用 /不能引发检测性异常不能引发检测性异常不能引发检测性异常不能引发检测性异常-尚未建立捕捉异常的代码尚未建立捕捉异常的代码尚未建立捕捉异常的代码尚未建立捕捉异常的代码 上述三个的组合构成的表达式上述三个的组合构成的表达式上述三个的组合构成的表达式上述三个的组合构成的表达式double zero =0.0;/常量常量double sum =4.5+3.7;/常量表达式常量表达式double zeroCopy
11、 =zero;/域域double rootTwo =Math.sqrt(2);/方法调用方法调用double someVal =sum+2*Math.sqrt(rootTwo);/组合组合静态域(类变量、类域):类的所有对象共享的域。静态域(类变量、类域):类的所有对象共享的域。静态域(类变量、类域):类的所有对象共享的域。静态域(类变量、类域):类的所有对象共享的域。由该类创建的所有对象共享这个域的单个值。由该类创建的所有对象共享这个域的单个值。由该类创建的所有对象共享这个域的单个值。由该类创建的所有对象共享这个域的单个值。类的静态域在类的静态域在类的静态域在类的静态域在加载类加载类加载类加
12、载类时初始化。时初始化。时初始化。时初始化。访问:访问:访问:访问:类内部:直接用域名。类内部:直接用域名。类内部:直接用域名。类内部:直接用域名。/nextID/nextID 类外部:通过类名和域名类外部:通过类名和域名类外部:通过类名和域名类外部:通过类名和域名 或或或或 类的对象引用和域名类的对象引用和域名类的对象引用和域名类的对象引用和域名 Body.nextIDBody.nextID mercury.nextID mercury.nextID即使即使即使即使mercurymercury引用为引用为引用为引用为nullnull,第二种访问方式也是正确的。,第二种访问方式也是正确的。,第
13、二种访问方式也是正确的。,第二种访问方式也是正确的。5.2 域静态域域静态域public class Body public long idNum;/唯一地标识一个天体唯一地标识一个天体public String nameFor;/该天体的名字该天体的名字public Body orbits;/该天体围绕着转的其它天体该天体围绕着转的其它天体public static long nextID=0;/后继天体的标识后继天体的标识 静态域静态域静态域静态域final域:被初始化后就不能再改变。域:被初始化后就不能再改变。final域的初始化:域的初始化:定义时初始化定义时初始化定义时初始化定义时初
14、始化类初始化后(类初始化后(类初始化后(类初始化后(static finalstatic final)对象创建完成后(没有对象创建完成后(没有对象创建完成后(没有对象创建完成后(没有staticstatic的的的的finalfinal)5.2 域域final域域5.2 域举例说明域举例说明类中有两种类型的变量:类中有两种类型的变量:类中有两种类型的变量:类中有两种类型的变量:直接在类中定义的变量直接在类中定义的变量直接在类中定义的变量直接在类中定义的变量和和和和在在在在具体方法的中定义的变量具体方法的中定义的变量具体方法的中定义的变量具体方法的中定义的变量。直接在类中定义的变量:类中在任何方法
15、之外声直接在类中定义的变量:类中在任何方法之外声直接在类中定义的变量:类中在任何方法之外声直接在类中定义的变量:类中在任何方法之外声明的变量,被称为类的域,域可以被类的所有方明的变量,被称为类的域,域可以被类的所有方明的变量,被称为类的域,域可以被类的所有方明的变量,被称为类的域,域可以被类的所有方法访问。法访问。法访问。法访问。在具体方法的中定义的变量:在方法中声明的变在具体方法的中定义的变量:在方法中声明的变在具体方法的中定义的变量:在方法中声明的变在具体方法的中定义的变量:在方法中声明的变量,是该方法的局部变量,局部变量只能在方法量,是该方法的局部变量,局部变量只能在方法量,是该方法的局
16、部变量,局部变量只能在方法量,是该方法的局部变量,局部变量只能在方法内访问。因为方法的变量与方法的生命周期相同,内访问。因为方法的变量与方法的生命周期相同,内访问。因为方法的变量与方法的生命周期相同,内访问。因为方法的变量与方法的生命周期相同,所以它们不能够被其它的类访问,用户也不能对所以它们不能够被其它的类访问,用户也不能对所以它们不能够被其它的类访问,用户也不能对所以它们不能够被其它的类访问,用户也不能对方法变量使用任何访问修饰符。方法变量使用任何访问修饰符。方法变量使用任何访问修饰符。方法变量使用任何访问修饰符。访问变量访问变量访问变量访问变量的能力取决于两个因素:创建的能力取决于两个因
17、素:创建的能力取决于两个因素:创建的能力取决于两个因素:创建变量变量变量变量时使用的时使用的时使用的时使用的修饰符修饰符修饰符修饰符和和和和变量声明变量声明变量声明变量声明在类中在类中在类中在类中的位置的位置的位置的位置。5.2 域举例说明域举例说明class CashRegister public int total;int sales_value;Outputlog log;void printReceipt(int total_sale)Tape.println(Total Sale=$+total-sale);Tape.prinltn(Thank you for shopping wi
18、th us.);void sellItem(int value)log.sale(value);total+=value;int totalSales()int num_of_sales,total=0;num_of_sales=log.countSales();for(int i=1;i=num_of_sales;i+)total+=sales_valuei;return(total);访问控制:控制谁能访问一个类或接口中的哪些成员,甚至于访问控制:控制谁能访问一个类或接口中的哪些成员,甚至于访问控制:控制谁能访问一个类或接口中的哪些成员,甚至于访问控制:控制谁能访问一个类或接口中的哪些成员
19、,甚至于控制谁能访问该类或接口。通过控制谁能访问该类或接口。通过控制谁能访问该类或接口。通过控制谁能访问该类或接口。通过访问修饰符访问修饰符访问修饰符访问修饰符实现。实现。实现。实现。一个类的所有成员都可被类本身的代码访问。一个类的所有成员都可被类本身的代码访问。一个类的所有成员都可被类本身的代码访问。一个类的所有成员都可被类本身的代码访问。为控制其它类的访问,类的成员(域和方法)有下述四种访问为控制其它类的访问,类的成员(域和方法)有下述四种访问为控制其它类的访问,类的成员(域和方法)有下述四种访问为控制其它类的访问,类的成员(域和方法)有下述四种访问修饰符,类中每个成员有且仅有一个可见性控
20、制。修饰符,类中每个成员有且仅有一个可见性控制。修饰符,类中每个成员有且仅有一个可见性控制。修饰符,类中每个成员有且仅有一个可见性控制。5.3 5.3 访问控制访问控制访问控制访问控制用用用用newnew创建对象。必须指定要创建的对象的类型和构创建对象。必须指定要创建的对象的类型和构创建对象。必须指定要创建的对象的类型和构创建对象。必须指定要创建的对象的类型和构造对象的每个实参。造对象的每个实参。造对象的每个实参。造对象的每个实参。JavaJava运行环境将分配足够的空间来存储对象的实例变运行环境将分配足够的空间来存储对象的实例变运行环境将分配足够的空间来存储对象的实例变运行环境将分配足够的空
21、间来存储对象的实例变量并初始化。初始化完成后,运行环境将返回这个新量并初始化。初始化完成后,运行环境将返回这个新量并初始化。初始化完成后,运行环境将返回这个新量并初始化。初始化完成后,运行环境将返回这个新建对象的引用。建对象的引用。建对象的引用。建对象的引用。实例是类的对象。5.4 5.4 创建对象创建对象创建对象创建对象Body sun=new Body();sun.idNum=Body.nextID+;sun.nameFor=“Sol”;sun.orbits=null;/in solar system,sum is middleBody earth=new Body();earth.idN
22、um=Body.nextID+;earth.nameFor=“Earth”;earth.orbits=sun;采用构造器的理由:采用构造器的理由:采用构造器的理由:采用构造器的理由:一些类没有参数来设置初始状态一些类没有参数来设置初始状态一些类没有参数来设置初始状态一些类没有参数来设置初始状态当构造某种对象时,需提供初始状态,避免重复当构造某种对象时,需提供初始状态,避免重复当构造某种对象时,需提供初始状态,避免重复当构造某种对象时,需提供初始状态,避免重复输入初始信息输入初始信息输入初始信息输入初始信息对象创建时要有正确的初始状态对象创建时要有正确的初始状态对象创建时要有正确的初始状态对象创
23、建时要有正确的初始状态非非非非publicpublic构造器可限制对象的创建使用者构造器可限制对象的创建使用者构造器可限制对象的创建使用者构造器可限制对象的创建使用者5.5 5.5 构造与初始化构造与初始化构造与初始化构造与初始化 构造器是具有特殊属性和特殊用途的特殊方法。构造器用于在建立类的构造器是具有特殊属性和特殊用途的特殊方法。构造器用于在建立类的构造器是具有特殊属性和特殊用途的特殊方法。构造器用于在建立类的构造器是具有特殊属性和特殊用途的特殊方法。构造器用于在建立类的对象时设置某些属性和执行某些复杂的任务。对象时设置某些属性和执行某些复杂的任务。对象时设置某些属性和执行某些复杂的任务。
24、对象时设置某些属性和执行某些复杂的任务。构造器使用与所属类相同的名字。构造器使用与所属类相同的名字。构造器使用与所属类相同的名字。构造器使用与所属类相同的名字。构造器可以有多个参数,也可以没有。构造器可以有多个参数,也可以没有。构造器可以有多个参数,也可以没有。构造器可以有多个参数,也可以没有。构造器不是方法,因为其没有返回类型。构造器不是方法,因为其没有返回类型。构造器不是方法,因为其没有返回类型。构造器不是方法,因为其没有返回类型。新创建对象的实例变量先被赋予缺省值,然后执行显式的初始化器,最新创建对象的实例变量先被赋予缺省值,然后执行显式的初始化器,最新创建对象的实例变量先被赋予缺省值,
25、然后执行显式的初始化器,最新创建对象的实例变量先被赋予缺省值,然后执行显式的初始化器,最后调用构造器的语句体。后调用构造器的语句体。后调用构造器的语句体。后调用构造器的语句体。构造器可具有任何类成员同样的访问修饰符,但它不是类成员。构造器可具有任何类成员同样的访问修饰符,但它不是类成员。构造器可具有任何类成员同样的访问修饰符,但它不是类成员。构造器可具有任何类成员同样的访问修饰符,但它不是类成员。5.5 5.5 构造与初始化构造与初始化构造与初始化构造与初始化class Body public long idNum;public String name=“”;public Body orbit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 对象
限制150内