java学习课件 第六章 类与对象.ppt





《java学习课件 第六章 类与对象.ppt》由会员分享,可在线阅读,更多相关《java学习课件 第六章 类与对象.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系第六章第六章 类与对象类与对象n6.1 类的基本概念n6.2 定义类n6.3 对象的创建与使用n6.4 参数传递n6.5 匿名对象Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系提问提问1、由键盘输入数据的两种形式及具体应用2、运算符的优先级及结合顺序3、表达式组成与判断Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系在在前前面面的的章章节节中中,对对JavaJava的的简简单单数数据据类类型型、数数组组、运运算算符符和和表表达达式式及及流流程程控控制制的的
2、方方法法作作了了详详细细的的介介绍绍。从从本本章章开开始始将将介介绍绍面面向向对对象象的的程程序序设设计计方方法法。面面向向对对象象的的编编程程思思想想是是力力图图使使在在计计算算机机语语言言中中对对事事物物的的描描述述与与现现实实世世界界中中该该事事物物的的本本来来面面目目尽尽可可能能的的一一致致。所所以以在在面面向向对对象象的的程程序序设设计计中中,类类(Class)(Class)和和对对象象(ObjectObject)是是面面向向对对象象程程序序设设计计方方法法中中最最核核心心的概念。的概念。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系6.1 类的基本概
3、念类的概念是为了让程序设计语言能更清楚地描述日常类的概念是为了让程序设计语言能更清楚地描述日常生活中的事物。类是对某一类事物的描述,是抽象的、概生活中的事物。类是对某一类事物的描述,是抽象的、概念上的定义;而对象则是实际存在的属该类事物的具体的念上的定义;而对象则是实际存在的属该类事物的具体的个体,因而也称为实例个体,因而也称为实例(Instance)(Instance)。下面用一个现实生活。下面用一个现实生活中的例子来说明类与对象的概念。图中的例子来说明类与对象的概念。图6.16.1所示的是一个所示的是一个“汽汽车类车类”与与“汽车实例汽车实例”的例子。的例子。Java2 程序设计基础程序设
4、计基础 信息学院计算机技术系信息学院计算机技术系汽车设计图第1辆第2辆第3辆图6.1 汽车类与汽车的实例Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系其中,汽车设计图就是其中,汽车设计图就是“汽车类汽车类”,由这,由这个图纸设计出来的若干个汽车就是按照该类生产个图纸设计出来的若干个汽车就是按照该类生产出的出的“汽车对象汽车对象”。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系思考:汽车类的组成思考:汽车类的组成Java2 程序设计基础程序设计基础 信息学
5、院计算机技术系信息学院计算机技术系因此,我们创建一个汽车类,则可表示为:Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系一般来说,类是由数据成员与函数成员封装而成的,其一般来说,类是由数据成员与函数成员封装而成的,其中数据成员表示类的属性,函数成员表示类的行为。中数据成员表示类的属性,函数成员表示类的行为。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系对对象象是是某某个个类类的的实实例例,其其变变量量表表示示属属性性,方方法法表表示示功功能能,JavaJava正正是是通通过过类类和和对象的概念来组织和构建程序的。对象的概念来组织和构
6、建程序的。封封装装、继继承承、多多态态是是面面向向对对象象编编程程中中采用的三大技术。采用的三大技术。对象对象 Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系piradiusheightarea()volume()成员变量成员方法图6.2 圆柱体类下面用下面用Java类来描述圆柱体,并能保存圆柱体的信息(底半径和高)类来描述圆柱体,并能保存圆柱体的信息(底半径和高),而且还能利用此类计算出圆柱体的面积和体积。,而且还能利用此类计算出圆柱体的面积和体积。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系每一个圆柱体,无论尺寸大小,都有底
7、半径和高这两个每一个圆柱体,无论尺寸大小,都有底半径和高这两个属性,而这两个属性就是圆柱体的数据,因此就本例而言,属性,而这两个属性就是圆柱体的数据,因此就本例而言,radiusradius(半径)与(半径)与heightheight(高)可以说是圆柱体类的数据成员(高)可以说是圆柱体类的数据成员(data member)(data member)。除了底半径和高这两个数据之外,还可以把计算底面积除了底半径和高这两个数据之外,还可以把计算底面积与体积这两个函数纳入圆柱体类里,变成类的函数成员与体积这两个函数纳入圆柱体类里,变成类的函数成员(function member)(function m
8、ember)。JavaJava称这种封装于类内的函数为称这种封装于类内的函数为“方法方法”(method)(method)。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系所谓的所谓的“类类”就是把事物的数据与相关功能封装就是把事物的数据与相关功能封装(Encapsulate)(Encapsulate)在一起,形成一种特殊的数据结构,用以在一起,形成一种特殊的数据结构,用以表达真实事物的一种抽象。表达真实事物的一种抽象。“EncapsulateEncapsulate”原意是原意是“将将装入胶囊内装入胶囊内”,现在胶囊就是类,而成员变量与成,现在胶囊就是类,而成员变
9、量与成员方法便是被封入的东西。图员方法便是被封入的东西。图6.26.2为圆柱体类的示意图。为圆柱体类的示意图。由图由图6.26.2可知,圆柱体类的成员变量有可知,圆柱体类的成员变量有pipi、radiusradius与与heightheight,而成员方法则有计算面积的,而成员方法则有计算面积的area()area()与计算体积与计算体积的的volume()volume()。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系6.2 类的定义格式类的定义格式1类的声明格式 类的声明格式如下:修饰符 class extends 父类名 implements 接口名类主体
10、其中,class是定义类的关键字,是所定义的类的名字,extends表示该类继承了它的父类,父类名指明父类的名称,implements表示类所实现的接口,若实现多个接口则用逗号隔开。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系Java的类包括变量和方法,分别叫做类的成员变量和成员方法。因此,类主体的设计主要是成员变量的设计和成员方法的设计两个部分。声明成员变量的格式为:修饰符 声明成员方法的格式为:(参数列表)throws 方法体2类主体设计类主体设计Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 public class Ci
11、rcle private double radius;private double area;final double pi=3.14;public void setRadius(double r)radius=r;public double calculateArea()return pi*radius*radius;例61 定义一个求圆面积的类定义一个求圆面积的类Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系其中其中classclass前面方括号前面方括号“”中的类修饰符是可选项,用中的类修饰符是可选项,用来说明类的特殊性质,类修饰符分为访问控制符、抽象类说
12、明来说明类的特殊性质,类修饰符分为访问控制符、抽象类说明符、友元类说明符和最终类说明符四种。各修饰符的含义如表符、友元类说明符和最终类说明符四种。各修饰符的含义如表6.16.1所示。所示。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系表表6.1类修饰符的含义类修饰符的含义修修饰饰符符含含 义义public将一个类声明为公共类,它可以被任何对象访问,一个程序的主类必须是公共类。abstract将一个类声明为抽象类,没有实现的方法,需要子类提供方法的实现。final将一个类声明为最终类即非继承类,表示它不能被其他类所继承。friendly友元类型,默认的修饰符,只有
13、在相同包中的对象才能使用这样的类。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 2成员变量成员变量一个类的成员变量描述了该类的内部信息,一个一个类的成员变量描述了该类的内部信息,一个成员变量可以是简单变量,也可以是对象、数组等其成员变量可以是简单变量,也可以是对象、数组等其他结构型数据。成员变量的格式如下:他结构型数据。成员变量的格式如下:修饰符修饰符 变量类型变量类型 变量名变量名=初值初值Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系表6.2成员变量修饰符的含义修修饰饰符符含含 义义public公共公共访问访问控制符。指定控
14、制符。指定该变该变量量为为公共的,它可以被任何公共的,它可以被任何对对象的方法象的方法访问访问。private私有私有访问访问控制符。指定控制符。指定该变该变量只允量只允许许自己自己类类的方法的方法访问访问,其他任何,其他任何类类(包括子(包括子类类)中的方法)中的方法均不能均不能访问访问此此变变量。量。protected保保护访问护访问控制符。指定控制符。指定该变该变量可以被它自己的量可以被它自己的类类及其子及其子类访问类访问,在子,在子类类中可以覆盖此中可以覆盖此变变量。量。friendly默默认认的友元的友元访问访问控制符,在同一个包中的其他控制符,在同一个包中的其他类类可以可以访问访问
15、此此变变量,而其他包中的量,而其他包中的类类不能不能访问访问该变该变量。量。final最最终终修修饰饰符。指定此符。指定此变变量的量的值值不能改不能改变变。static静静态态修修饰饰符。指定符。指定该变该变量被所有量被所有对对象共享,即所有的象共享,即所有的实实例都可使用例都可使用该变该变量。量。transient过过渡修渡修饰饰符。指定符。指定该变该变量是一个系量是一个系统统保留,保留,暂暂无特无特别别作用的作用的临时临时性性变变量。量。volatile易失修易失修饰饰符。指定符。指定该变该变量可以同量可以同时时被几个被几个线线程控制和修改。程控制和修改。Java2 程序设计基础程序设计基
16、础 信息学院计算机技术系信息学院计算机技术系表6.3成员方法修饰符的含义修修饰饰符符含含 义义public公共公共访问访问控制符。指定控制符。指定该该方法方法为为公共的,它可以被任何公共的,它可以被任何对对象的方法象的方法访问访问。private私有私有访问访问控制符。指定控制符。指定该该方法只允方法只允许许自己自己类类的方法的方法访问访问,其他任何,其他任何类类(包括子(包括子类类)中的)中的方法均不能方法均不能访问访问此方法。此方法。protected保保护访问护访问控制符。指定控制符。指定该该方法可以被它的方法可以被它的类类及其子及其子类访问类访问。friendly默默认认的友元的友元访
17、问访问控制符,在同一个包中的其他控制符,在同一个包中的其他类类可以可以访问访问此方法,而其他包中的此方法,而其他包中的类类不能不能访问该访问该方法。方法。final最最终终修修饰饰符。指定符。指定该该方法不能被重方法不能被重载载。static静静态态修修饰饰符。指定不需要符。指定不需要实实例化一个例化一个对对象就可以激活的方法。象就可以激活的方法。synchronized同步修同步修饰饰符。在多符。在多线线程程序中,程程序中,该该修修饰饰符用于在运行前,符用于在运行前,对对它所属的方法加它所属的方法加锁锁,以防止,以防止其他其他线线程程访问访问,运行,运行结结束后解束后解锁锁。native本地
18、修本地修饰饰符。指定此方法的方法体是用其他符。指定此方法的方法体是用其他语语言(如言(如C)在程序外部)在程序外部编编写的。写的。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系下面定义前面叙述过的圆柱体类如下:下面定义前面叙述过的圆柱体类如下:class Cylinder /定义圆柱体类定义圆柱体类Cylinder double radius;/声明成员变量声明成员变量radius int height;/声明成员变量声明成员变量height final double pi=3.14;/常量常量 void area()/定义成员方法定义成员方法area(),用来
19、计算底面积,用来计算底面积 System.out.println(“圆柱底面积圆柱底面积=”+pi*radius*radius);void volume()/定义成员方法定义成员方法volume(),用来计算体积,用来计算体积 System.out.println(“圆柱体体积圆柱体体积=”+(pi*radius*radius)*height);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系(1 1)从语法形式上看,成员变量是属于类的,而)从语法形式上看,成员变量是属于类的,而局部变量是在方法中定义的变量或方法的参数;成员局部变量是在方法中定义的变量或方法的参数
20、;成员变量可以被变量可以被publicpublic、privateprivate、staticstatic等修饰符所修饰,等修饰符所修饰,而局部变量则不能被访问控制修饰符及而局部变量则不能被访问控制修饰符及staticstatic所修饰;所修饰;成员变量和局部变量都可以被成员变量和局部变量都可以被finalfinal所修饰。所修饰。4.4.成员变量与局部变量的区别成员变量与局部变量的区别Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系(2 2)从变量在内存中的存储方式上看,)从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在于堆成员变量是对象的一部
21、分,而对象是存在于堆内存的,而局部变量是存在于栈内存的。内存的,而局部变量是存在于栈内存的。(3 3)从变量在内存中的存在时间上看,)从变量在内存中的存在时间上看,成员变量是对象的一部分,它随着对象的创建成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而产生,而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而自动消失。随着方法调用的结束而自动消失。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 (4 4)成成员员变变量量如如果果没没有有被被赋赋初初值值,则则会会自自动动以以类类型型的的默默认认值值赋赋值值(有有一一种种情情况况例
22、例外外,被被finalfinal修修饰饰但但没没有有被被staticstatic修修饰饰的的成成员员变变量量必必须须显显式式地地赋赋值值);而而局局部部变变量量则则不不会会自自动动赋赋值值,必必须显式地赋值后才能使用。须显式地赋值后才能使用。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系6.3 对象的创建与使用对象是整个面向对象程序设计的理论基础,由于面对象是整个面向对象程序设计的理论基础,由于面向对象程序中使用类来创建对象,所以可以将对象理解向对象程序中使用类来创建对象,所以可以将对象理解为一种新型的变量,它保存着一些比较有用的数据,但为一种新型的变量,它保存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java学习课件 第六章 类与对象 java 学习 课件 第六 对象

限制150内