第06章对象和类(2)精选PPT.ppt
《第06章对象和类(2)精选PPT.ppt》由会员分享,可在线阅读,更多相关《第06章对象和类(2)精选PPT.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第0606章对象和类章对象和类章对象和类章对象和类(2)(2)第1页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程2/138学习目标学习目标1.理解对象和类的基本概念,能定义类并能理解对象和类的基本概念,能定义类并能创建类的对象;理解构造方法的作用,能使创建类的对象;理解构造方法的作用,能使用构造方法创建类的对象。用构造方法创建类的对象。2.掌握使用掌握使用Java类库中类的方法。类库中类的方法。3.理解类的封装。理解类的封装。4.初步掌握面向对象程序设计。初步掌握面向对象程序设计。第2页,此课件共83页哦楚雄师范学院计算机科学系楚雄
2、师范学院计算机科学系 java程序设计课程程序设计课程3/138内容摘要内容摘要6.1 引言引言6.2 对象和类对象和类6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访问对象通过引用变量来访问对象6.5 使用使用Java类库中的类类库中的类6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器6.7 数据域的封装数据域的封装第3页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程4/138内容摘要内容摘要6.8 永久对象和类永久对象和类6.9 给方法传递对象参数给方法传递对象参数6.10 静态变量、常量和静态
3、方法静态变量、常量和静态方法6.11 变量的作用域变量的作用域6.12 关键字关键字this6.13 对象数组对象数组第4页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程5/138内容摘要内容摘要6.1 引言引言6.2 对象和类对象和类6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访问对象通过引用变量来访问对象6.5 使用使用Java类库中的类类库中的类6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器6.7 数据域的封装数据域的封装第5页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科
4、学系 java程序设计课程程序设计课程6/1386.6可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 所谓所谓可见性修饰可见性修饰是指对数据、方法和类的访问权限进行是指对数据、方法和类的访问权限进行控制的行为;而用来表示这种行为的符号称为控制的行为;而用来表示这种行为的符号称为可见性可见性修饰符修饰符。本节介绍本节介绍public、private和默认修饰符。和默认修饰符。public:使得类、方法和数据域可以在任何类中访问;:使得类、方法和数据域可以在任何类中访问;private:使得方法和数据域只能从它自己所在的类:使得方法和数据域只能从它自己所在的类中访问;中访问;默认修饰符:
5、使得类、方法和数据域可以从同一个包里的默认修饰符:使得类、方法和数据域可以从同一个包里的任何类中访问。任何类中访问。图图6-8描述了同一个包和不同包中访问的情形。描述了同一个包和不同包中访问的情形。第6页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程7/1386.6可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 图图6-8 public修饰符使修饰符使得访问没有限制,得访问没有限制,private修饰符限定只能修饰符限定只能从它自己所在的类中访问,从它自己所在的类中访问,默认修饰符限定只能在包默认修饰符限定只能在包内访问。内访问。
6、第7页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程8/1386.6可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 图图6-9描述了类被限定的情形。描述了类被限定的情形。第8页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程9/1386.6可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器 注意注意1:可见性修饰符:可见性修饰符private只修饰数据和只修饰数据和方法,不修饰整个类(除了内部类)。方法,不修饰整个类(除了内部类)。注意注意2:可见性修饰符用于类的成员,而不
7、:可见性修饰符用于类的成员,而不能用于方法中的局部变量。在方法中使用可能用于方法中的局部变量。在方法中使用可见性修饰符将引起编译时错误。见性修饰符将引起编译时错误。注意注意3:大多数情况下,构造方法是公有的,:大多数情况下,构造方法是公有的,但是,为想防止用户创建类的实例,可以使但是,为想防止用户创建类的实例,可以使用私有的构造方法。用私有的构造方法。第9页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程10138内容摘要内容摘要6.1 引言引言6.2 对象和类对象和类6.3 使用构造方法创建对象使用构造方法创建对象 6.4 通过引用变量来访
8、问对象通过引用变量来访问对象6.5 使用使用Java类库中的类类库中的类6.6 可见性修饰符、访问器和修改器可见性修饰符、访问器和修改器6.7 数据域的封装数据域的封装第10页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程111386.7 数据域的封装数据域的封装 我们来看一下前面的例我们来看一下前面的例6.1:class SimpleCircle double radius;SimpleCircle()/*构造一个其半径为构造一个其半径为1的圆对象的圆对象*/radius=1.0;/*构造一个由参数指定半径的圆对象构造一个由参数指定半径的
9、圆对象*/SimpleCircle(double newRadius)/*构造一个由参数指定半构造一个由参数指定半径的圆对象径的圆对象*/radius=newRadius;第11页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程121386.7 数据域的封装数据域的封装 double findArea()return radius*radius*3.14159;/*类定义结束类定义结束*/public class TestSimpleCircle public static void main(String args)/创建一个半径为创建一个
10、半径为5的圆对象的圆对象 SimpleCircle myCircle;myCircle=new SimpleCircle(5);/创建一个半径为创建一个半径为1的圆对象的圆对象 SimpleCircle yourCircle;yourCircle=new SimpleCircle();System.out.println(“其半径为其半径为”+myCircle.radius+“的圆的圆面积为面积为”+myCircle.findArea();第12页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程131386.7 数据域的封装数据域的封装 Sy
11、stem.out.println(“其半径为其半径为”+yourCircle.radius+“的圆的圆面积为面积为”+yourCircle.findArea();/修改圆半径修改圆半径 yourCircle.radius=100;System.out.println(“其半径为其半径为”+yourCircle.radius+“的圆的圆面积为面积为”+yourCircle.findArea();问题:问题:它允许通过对象直接访问数据域并进行修改(如它允许通过对象直接访问数据域并进行修改(如yourCircle.radius=100),这样做使类难于维护并且不易调试。),这样做使类难于维护并且不易
12、调试。解决:解决:使用使用private修饰符限定修饰符限定radius变量,使它成为私有的。这就称为变量,使它成为私有的。这就称为数数据域的封装据域的封装。第13页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程141386.7 数据域的封装数据域的封装产生了的新问题:客户经常需要存取、修改产生了的新问题:客户经常需要存取、修改数据域,怎么办?数据域,怎么办?解决方法:解决方法:可以编写一个可以编写一个get方法返回数据值,这样客方法返回数据值,这样客户就能访问私有数据域;编写一个户就能访问私有数据域;编写一个set方法方法进行修改数据值,
13、这样客户就能修改私有数进行修改数据值,这样客户就能修改私有数据域。据域。通俗地把通俗地把get方法称为方法称为读取器读取器或或访问器访问器,set称为称为设置器设置器或或修改器修改器。第14页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程151386.7 数据域的封装数据域的封装get方法的形式:方法的形式:public ()return ;set方法的形式:方法的形式:public void()=;第15页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程161386.7 数据域的封装数据
14、域的封装例例6.2:修改例:修改例6.1,对类中方法进行封装。,对类中方法进行封装。解答:程序如下解答:程序如下class SimpleCircle private double radius;SimpleCircle()/*构造一个其半径为构造一个其半径为1的圆对象的圆对象*/radius=1.0;/*构造一个由参数指定半径的圆对象构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)/*构造一个由参数指定半构造一个由参数指定半径的圆对象径的圆对象*/radius=newRadius;第16页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机
15、科学系 java程序设计课程程序设计课程171386.7 数据域的封装数据域的封装 /*返回私有变量返回私有变量Radius*/publiuc double getRadius()return radius;/*修改私有变量修改私有变量Radius*/public void setRadius(double newRadius)radius=newRadius;第17页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程181386.7 数据域的封装数据域的封装 double findArea()return radius*radius*3.14
16、159;/*类定义结束类定义结束*/public class TestSimpleCircle public static void main(String args)/创建一个半径为创建一个半径为5的圆对象的圆对象 SimpleCircle myCircle;myCircle=new SimpleCircle(5);/创建一个半径为创建一个半径为1的圆对象的圆对象 SimpleCircle yourCircle;yourCircle=new SimpleCircle();System.out.println(“其半径为其半径为”+myCircle.getRadius()+“的圆面积为的圆面积
17、为”+myCircle.findArea();第18页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程191386.7 数据域的封装数据域的封装 System.out.println(“其半径为其半径为”+yourCircle.getRadius()+“的的圆面积为圆面积为”+yourCircle.findArea();/修改圆半径修改圆半径 yourCircle.setRadius(100);System.out.println(“其半径为其半径为”+yourCircle.getRadius()+“的圆面积为的圆面积为”+yourCircl
18、e.findArea();第19页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程20138内容摘要内容摘要6.8 永久对象和类永久对象和类6.9 给方法传递对象参数给方法传递对象参数6.10 静态变量、常量和静态方法静态变量、常量和静态方法6.11 变量的作用域变量的作用域6.12 关键字关键字this6.13 对象数组对象数组6.14 类的抽象和填封装类的抽象和填封装第20页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程211386.8 永久对象和永久对象和永久类永久类我们先来回顾一下
19、例我们先来回顾一下例6.2:它把例它把例6.1中中SimpleCircle类的数据域进行了类的数据域进行了封装封装,即限定数据域为私有的即限定数据域为私有的,并引入了修改器并引入了修改器以便客户通过它能进行修改私有数据。以便客户通过它能进行修改私有数据。现在我们试想一下,如果把现在我们试想一下,如果把SimpleCircle类修类修改器去掉即没有改器去掉即没有set方法,则会有什么情况?方法,则会有什么情况?回答是:回答是:SimpleCircle类的对象的内容将永远类的对象的内容将永远不能再改变。不能再改变。此时,这种对象就称为永久对象。此时,这种对象就称为永久对象。所谓所谓永久对象永久对象
20、就是一旦创建其内容就不能改变就是一旦创建其内容就不能改变的对象,永久对象的类称为的对象,永久对象的类称为永久类永久类。第21页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程221386.8 永久对象和永久对象和永久类永久类例例6.3:把把SimpleCircle类改为一个永久类。类改为一个永久类。解答:在例解答:在例6.2中去掉修改器即可:中去掉修改器即可:class SimpleCircle private double radius;SimpleCircle()/*构造一个半径为构造一个半径为1的圆对象的圆对象*/radius=1.0;
21、/*构造一个由参数指定半径的圆对象构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)/*构造一个由参构造一个由参数指定半径的圆对象数指定半径的圆对象*/radius=newRadius;第22页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程231386.8 永久对象和永久对象和永久类永久类/*返回私有变量返回私有变量Radius*/public double getRadius()return radius;/*计算圆面积计算圆面积*/double findArea()return radius*
22、radius*3.14159;/*类定义结束类定义结束*/第23页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程241386.8 永久对象和永久对象和永久类永久类注意:一个类的所有数据域都是私有的并且没有修改器,注意:一个类的所有数据域都是私有的并且没有修改器,但,它不一定是永久类。但,它不一定是永久类。为什么呢?为什么呢?因为:客户可以通过其它类对它进行修改。因为:客户可以通过其它类对它进行修改。例如:下面的例如:下面的Student类,其所有数据都是私有的并且没类,其所有数据都是私有的并且没有修改器,但它不是永久的,因为客户可以通过有修
23、改器,但它不是永久的,因为客户可以通过BirthDate类实现对它的修改:类实现对它的修改:public class Student private int id;private BirthDate birthDate;/*引用非永久对象引用非永久对象*/第24页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程251386.8 永久对象和永久对象和永久类永久类 public Student(int ssn,int year,int month,int day)id=ssn;birthDate=new BirthDate(year,month,
24、day);public int getId()return id;public BirthDate getBirthDate()return birthDate;第25页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程261386.8 永久对象和永久对象和永久类永久类public class BirthDate/*非永久类非永久类*/private int year;private int month;private int day;public BirthDate(int newYear,int newMonth,int newDay)ye
25、ar=newYear;month=newMonth;day=newDay;第26页,此课件共83页哦楚雄师范学院计算机科学系楚雄师范学院计算机科学系 java程序设计课程程序设计课程271386.8 永久对象和永久对象和永久类永久类 public void setYear(int newYear)year=newYear;/*The end of class BirthDate*/下面的代码说明下面的代码说明Student不是永久类:不是永久类:public class Test public static void main(String args)Student student=new S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 06 对象 精选 PPT
限制150内