java语言程序设计基础篇(第八版)课件第06章对象和类(1).pptx
-
资源ID:25930204
资源大小:131.78KB
全文页数:45页
- 资源格式: PPTX
下载积分:30金币
快捷下载
![游客一键下载](/images/hot.gif)
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
java语言程序设计基础篇(第八版)课件第06章对象和类(1).pptx
1 1. 理解对象和类的基本概念,能定义类并理解对象和类的基本概念,能定义类并能创建类的对象;理解构造方法的作用,能能创建类的对象;理解构造方法的作用,能使用构造方法创建类的对象。使用构造方法创建类的对象。 2. 掌握使用掌握使用Java类库中类的方法。类库中类的方法。 3. 理解类的封装。理解类的封装。 4. 初步掌握面向对象程序设计。初步掌握面向对象程序设计。2 6.1 引言引言 6.2 对象和类对象和类 6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访问对象通过引用变量来访问对象 6.5 使用使用Java类库中的类类库中的类 6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 6.7 数据域的封装数据域的封装3 6.8 永久对象和类永久对象和类 6.9 给方法传递对象参数给方法传递对象参数 6.10 静态变量、常量和静态方法静态变量、常量和静态方法 6.11 变量的作用域变量的作用域 6.12 关键字关键字this 6.13 对象数组对象数组4 6.1 6.2 对象和类对象和类 6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访问对象通过引用变量来访问对象 6.5 使用使用Java类库中的类类库中的类 6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 6.7 数据域的封装数据域的封装5 以往我们学过以往我们学过C语言程序设计,它需要选择语言程序设计,它需要选择数据结构、设计算法,然后再把算法用数据结构、设计算法,然后再把算法用C语语言编写出来。这种编程方法就是所谓的言编写出来。这种编程方法就是所谓的面向面向过程程序设计过程程序设计,支持这种方法的语言如,支持这种方法的语言如C语语言则称为言则称为面向过程语言面向过程语言。 像像Java等所谓的面向对象语言不仅仍然具等所谓的面向对象语言不仅仍然具有面向过程语言的特点,而且通过类的封装、有面向过程语言的特点,而且通过类的封装、继承和多态性增加了灵活性、模块性、清晰继承和多态性增加了灵活性、模块性、清晰性和可重用性等有益特性。性和可重用性等有益特性。6 在面向过程程序设计中,数据和对数据的操在面向过程程序设计中,数据和对数据的操作是分离的,因而这种作法需要把数据传递作是分离的,因而这种作法需要把数据传递到函数和过程中。到函数和过程中。 而在面向对象程序设计中,把数据和属于它而在面向对象程序设计中,把数据和属于它的操作放入一个所谓的对象(的操作放入一个所谓的对象(object)的整)的整体中,这样做解决了面向过程程序设计中不体中,这样做解决了面向过程程序设计中不可避免的许多问题。可避免的许多问题。 面向对象程序设计是一种更贴近真实世界的面向对象程序设计是一种更贴近真实世界的模型组织程序;使用对象可以改进软件的可模型组织程序;使用对象可以改进软件的可重用性,使程序更易于开发和维护。重用性,使程序更易于开发和维护。7 Java程序可以看作是相互合作的对象所构程序可以看作是相互合作的对象所构成的集中。成的集中。 本章介绍面向对象程序设计的基本知识:本章介绍面向对象程序设计的基本知识: 声明类、创建对象、处理对象以及组织对象声明类、创建对象、处理对象以及组织对象协调工作。协调工作。8 6.1 引言引言 6.2 6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访问对象通过引用变量来访问对象 6.5 使用使用Java类库中的类类库中的类 6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 6.7 数据域的封装数据域的封装9 对象对象(object)代表现实世界中可以明确标)代表现实世界中可以明确标识的一个事物。例如,一个学生,一张桌子,识的一个事物。例如,一个学生,一张桌子,一个圆,一个铵钮甚至一笔贷款都可以看作一个圆,一个铵钮甚至一笔贷款都可以看作一个对象。一个对象。 对象有自己独有的特性、状态和行为。对象对象有自己独有的特性、状态和行为。对象的状态是由具有当前值的数据域的集合构成;的状态是由具有当前值的数据域的集合构成;对象的行为是由方法的集合定义的。图对象的行为是由方法的集合定义的。图6-1(a)描述了一个一般对象与它的数据域和方描述了一个一般对象与它的数据域和方法。调用对象的一个方法就是要求对象执行法。调用对象的一个方法就是要求对象执行一项任务。一项任务。 例如,例如,Circle对象具有数据域对象具有数据域radius,它是,它是10 圆的特征属性。圆的一个行为是使用圆的特征属性。圆的一个行为是使用findArea()方法计算它的面积。如图方法计算它的面积。如图6-1(b)所示所示11 类类(class)是定义同一类型对象的结构。)是定义同一类型对象的结构。在在Java的类中,数据用来描述属性,方法的类中,数据用来描述属性,方法用来定义行为。此外,还提供一个特殊的方用来定义行为。此外,还提供一个特殊的方法,称为构造方法法,称为构造方法(constructor),调用它,调用它可以创建类的对象。构造方法很象一般的方可以创建类的对象。构造方法很象一般的方法,可以执行任何操作,但是设计构造方法法,可以执行任何操作,但是设计构造方法是为了进行初始化操作。例如,初始化对象是为了进行初始化操作。例如,初始化对象的数据域。图的数据域。图6-2显示了显示了Circle对象的类的对象的类的例子。例子。1213 注意注意1:Circle类与目前所见过的所有其他类与目前所见过的所有其他类不同。它没有类不同。它没有main方法,因此,不能运方法,因此,不能运行,它仅仅是一个用于声明和创建行,它仅仅是一个用于声明和创建Circle对对象的定义。象的定义。 注意注意2:Circle类中定义了类中定义了2个构造方法,第个构造方法,第一个没有参数,这种没有参数的构造方法称一个没有参数,这种没有参数的构造方法称为为无参构造方法无参构造方法。14 6.1 引言引言 6.2 对象和类对象和类 6.3 6.4 通过引用变量来访问对象通过引用变量来访问对象 6.5 使用使用Java类库中的类类库中的类 6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 6.7 数据域的封装数据域的封装15 构造方法必须与定义它的类有完全的名字。构造方法必须与定义它的类有完全的名字。 和所有方法一样,构造方法可以被重载,从和所有方法一样,构造方法可以被重载,从而更易于用不同的初始数据值来构造对象。而更易于用不同的初始数据值来构造对象。 在类中创建一个对象,使用在类中创建一个对象,使用new操作符调用操作符调用构造方法,如:构造方法,如: nesw (参数);(参数); 例如,例如,new Circle()调调Circle类中第一个构类中第一个构造方法,创建一个造方法,创建一个Circle对象;对象; new Circle(5)调调Circle类中第二个构造方法,类中第二个构造方法,创建一个创建一个Circle对象,该对象半径为对象,该对象半径为5。16 一个类不声明构造方法,在这种情况下,类中一个类不声明构造方法,在这种情况下,类中隐含地声明了一个方法体为空的无参构造方法。隐含地声明了一个方法体为空的无参构造方法。 注意,构造方法是一种特殊方法,与一般方法注意,构造方法是一种特殊方法,与一般方法有三点不同:有三点不同: 1)构造方法必须与所在类具有相同的名字;)构造方法必须与所在类具有相同的名字; 2)构造方法没有返回类型,甚至连)构造方法没有返回类型,甚至连void也没也没有;有; 3)构造方法的调用是在创建一个对象时使用)构造方法的调用是在创建一个对象时使用new操作符进行的;构造方法的作用是初始化操作符进行的;构造方法的作用是初始化对象。对象。17 6.1 引言引言 6.2 对象和类对象和类 6.3 使用构造方法创建对象使用构造方法创建对象 6.5 使用使用Java类库中的类类库中的类 6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 6.7 数据域的封装数据域的封装18 新创建的对象在内存中占用空间,那么它们新创建的对象在内存中占用空间,那么它们是如何被访问呢?是如何被访问呢?19 对象通过引用变量来访问,该变量包含对象对象通过引用变量来访问,该变量包含对象的引用地址,使用如下语法格式不说明:的引用地址,使用如下语法格式不说明: ; 一个类所定义的类型被称为引用类型。任何一个类所定义的类型被称为引用类型。任何类型为类的变量都能引用该类的一个实例。类型为类的变量都能引用该类的一个实例。例:例: Circle myCircle; myCircle=new Circle(); 20 定义引用变量和创建一个对象并使用引用变定义引用变量和创建一个对象并使用引用变量指向该对象可以合并为一句来完成,其格量指向该对象可以合并为一句来完成,其格式为:式为: =new (); 例如:例如: Circle myCircle=new Circle(); 21 当一个对象被创建后,可以通过它的引用变当一个对象被创建后,可以通过它的引用变量来访问,其语法格式为:量来访问,其语法格式为: .; .(); 例如:例如: Circle myCircle=new Circle(); myCircle.radius=9; myCircle.findArea();22 例例6.1 声明类并创建对象。声明类并创建对象。 问题:编写程序,构造半径为问题:编写程序,构造半径为5和为半和为半径为径为1的圆对象,并显示这两个圆的半径和的圆对象,并显示这两个圆的半径和面积;再将第面积;再将第2个对象的半径改为个对象的半径改为100,显,显示其新的半径和面积。示其新的半径和面积。 解答:解答:23 class SimpleCircle double radius; /*构造一个其半径为构造一个其半径为1的圆对象的圆对象*/ SimpleCircle() radius=1.0; /*构造一个由参数指定半径的圆对象构造一个由参数指定半径的圆对象*/24 SimpleCircle(double newRadius) radius=newRadius; double findArea() return radius*radius*3.14159; /*类定义结束类定义结束*/25 这个类不是主类,不能运行,那么如何使用这个类不是主类,不能运行,那么如何使用呢?回答是:在主类中使用。呢?回答是:在主类中使用。 使用上述类的主类如下:使用上述类的主类如下: public class TestSimpleCircle public static void main(String args) /创建一个半径为创建一个半径为5的圆对象的圆对象 SimpleCircle myCircle; myCircle=new SimpleCircle(5);26 /创建一个半径为创建一个半径为1的圆对象的圆对象 SimpleCircle yourCircle; yourCircle=new SimpleCircle(); System.out.println(“其半径其半径为为”+myCircle.radius+“的圆面积的圆面积为为”+myCircle.findArea(); System.out.println(“其半径其半径为为”+yourCircle.radius+“的圆面积的圆面积为为”+yourCircle.findArea();27 /修改圆半径修改圆半径 yourCircle.radius=100; System.out.println(“其半径其半径为为”+yourCircle.radius+“的圆面积的圆面积为为”+yourCircle.findArea(); 28 这两个类可以放在同一个文件中。这两个类可以放在同一个文件中。 下面我们来运行这个例子。下面我们来运行这个例子。 (运行)(运行)29 注意注意1:可以把两个类放在同一个文件中,:可以把两个类放在同一个文件中,但一个文件中只能有一个但一个文件中只能有一个public类,并且类,并且public类必须与文件名相同。类必须与文件名相同。 注意注意2:上述两个类可以合并为一个:上述两个类可以合并为一个: public class SimpleCircle public static void main(String args) /创建一个半径为创建一个半径为5的圆对象的圆对象 SimpleCircle myCircle; myCircle=new SimpleCircle(5); /创建一个半径为创建一个半径为1的圆对象的圆对象30 SimpleCircle yourCircle; yourCircle=new SimpleCircle(); System.out.println(其半径为其半径为+myCircle.radius+的圆面积为的圆面积为+myCircle.findArea(); System.out.println(其半径为其半径为+yourCircle.radius+的圆面积为的圆面积为+yourCircle.findArea(); /修改圆半径修改圆半径 yourCircle.radius=100;31 System.out.println(其半径为其半径为+yourCircle.radius+的圆面积为的圆面积为+yourCircle.findArea(); double radius; /*构造一个其半径为构造一个其半径为1的圆对象的圆对象*/ SimpleCircle() radius=1.0; 32 /*构造一个由参数指定半径的圆对象构造一个由参数指定半径的圆对象*/ SimpleCircle(double newRadius) radius=newRadius; double findArea() return radius*radius*3.14159; 33 如果一个引用型变量没有引用任何对象,这如果一个引用型变量没有引用任何对象,这个对象就有一个特别的个对象就有一个特别的Java值值null。null与与true和和false一样是一个直接量。一样是一个直接量。true和和false用于用于boolean型变量,而型变量,而null用于引用用于引用型变量。型变量。 引用型数据的默认值是引用型数据的默认值是null,数值型的默认,数值型的默认值是值是0,boolean型的默认值是型的默认值是false,char型的默认值为型的默认值为u0000。 然而,然而,Java没有给方法中的局部变量赋予没有给方法中的局部变量赋予默认值,下面代码显示默认值,下面代码显示Student对象中数据对象中数据域域name、age、isScienceMajor和和gender34 的缺省值:的缺省值: class Student String name;/默认值为默认值为null int age ;/默认值为默认值为0 boolean isScienceMajor;/默认值为默认值为false char gender ;/默认值为默认值为u0000 public static void main(String args) Student student=new Student(); System.out.println(“name=”+student.name); System.out.println(“age=”+student.age);35 System.out.println(“isScienceMajor=”+ student. isScienceMajor); System.out.println(“gender=”+ student.gender); 而下面的代码是错的:而下面的代码是错的:36 class Test int x;/x没有默认值没有默认值 String y ;/y没有默认值没有默认值 System.out.println(“x是是”+x); System.out.println(“y是是”+y); 37 一个基本数据类型变量存放基本数据类型的一个基本数据类型变量存放基本数据类型的值,而一个对象引用型变量存放指向对象在值,而一个对象引用型变量存放指向对象在内存中存储位置的引用;内存中存储位置的引用;3839 将一个引用变量复制到另一个引用变量而不将一个引用变量复制到另一个引用变量而不是复制对象,它仅仅将一个对象的引用值赋是复制对象,它仅仅将一个对象的引用值赋值给另一个变量。值给另一个变量。4041 6.1 引言引言 6.2 对象和类对象和类 6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访问对象通过引用变量来访问对象 6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 6.7 数据域的封装数据域的封装42 前面我们讲过,前面我们讲过,Java类库是系统提供的供类库是系统提供的供我们使用的预先定义类的集合。以后的教学我们使用的预先定义类的集合。以后的教学中我们会经常使用。中我们会经常使用。 当编写程序创建图形用户界面时,将会使用当编写程序创建图形用户界面时,将会使用Java的类创建窗体、按钮、单选按钮、组的类创建窗体、按钮、单选按钮、组合框、列表框等。合框、列表框等。 下在的例子程序创建了两个窗体:下在的例子程序创建了两个窗体:43 import javax.swing.JFrame; public class TestFrame public static void main(String args) JFrame frame1=new JFrame(); frame1.setTitle(窗口窗口 1); frame1.setSize(200,150); frame1.setLocation(200,100); frame1.setVisible(true);44 JFrame frame2=new JFrame(); frame2.setTitle(窗口窗口 2); frame2.setSize(200,150); frame2.setLocation(410,100); frame2.setVisible(true); 45