《第06章对象和类(2)优秀课件.ppt》由会员分享,可在线阅读,更多相关《第06章对象和类(2)优秀课件.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第0606章对象和类章对象和类(2)(2)第1 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程2/138学习目标 1.理解对象和类的基本概念,能定义类并能创建类的对象;理解构造方法的作用,能使用构造方法创建类的对象。2.掌握使用Java 类库中类的方法。3.理解类的封装。4.初步掌握面向对象程序设计。第2 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 3/138内容摘要 6.1 引言 6.2 对象和类 6.3 使用构造方法创建对象 6.4 通过引用变量来访问对象 6.5 使用Java 类库中的类 6.6 可见性修饰符、访问器和修改器 6.7 数据
2、域的封装第3 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 4/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组第4 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程5/138内容摘要 6.1 引言 6.2 对象和类 6.3 使用构造方法创建对象 6.4 通过引用变量来访问对象 6.5 使用Java 类库中的类 6.6 可见性修饰符、访问器和修改器 6.7 数据域的封装第5 页,本讲稿共83 页楚雄师范学院计算机科学系 java
3、程序设计课程 6/1386.6 可见性修饰符、访问器和修改器 所谓可见性修饰是指对数据、方法和类的访问权限进行控制的行为;而用来表示这种行为的符号称为可见性修饰符。本节介绍public、private 和默认修饰符。public:使得类、方法和数据域可以在任何类中访问;private:使得方法和数据域只能从它自己所在的类中访问;默认修饰符:使得类、方法和数据域可以从同一个包里的任何类中访问。图6-8 描述了同一个包和不同包中访问的情形。第6 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 7/1386.6 可见性修饰符、访问器和修改器 图6-8 public 修饰符使得访
4、问没有限制,private 修饰符限定只能从它自己所在的类中访问,默认修饰符限定只能在包内访问。第7 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程8/1386.6 可见性修饰符、访问器和修改器 图6-9 描述了类被限定的情形。第8 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 9/1386.6 可见性修饰符、访问器和修改器 注意1:可见性修饰符private 只修饰数据和方法,不修饰整个类(除了内部类)。注意2:可见性修饰符用于类的成员,而不能用于方法中的局部变量。在方法中使用可见性修饰符将引起编译时错误。注意3:大多数情况下,构造方法是公有的,
5、但是,为想防止用户创建类的实例,可以使用私有的构造方法。第9 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 10/138内容摘要 6.1 引言 6.2 对象和类 6.3 使用构造方法创建对象 6.4 通过引用变量来访问对象 6.5 使用Java 类库中的类 6.6 可见性修饰符、访问器和修改器 6.7 数据域的封装第10 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 11/1386.7 数据域的封装 我们来看一下前面的例6.1:class SimpleCircle double radius;SimpleCircle()/*构造一个其半径为1 的
6、圆对象*/radius=1.0;/*构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)/*构造一个由参数指定半径的圆对象*/radius=newRadius;第1 1 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程12/1386.7 数据域的封装 double findArea()return radius*radius*3.14159;/*类定义结束*/public class TestSimpleCircle public static void main(String args)/创建一个半径为5 的圆对象 SimpleC
7、ircle myCircle;myCircle=new SimpleCircle(5);/创建一个半径为1 的圆对象 SimpleCircle yourCircle;yourCircle=new SimpleCircle();System.out.println(“其半径为”+myCircle.radius+“的圆面积为”+myCircle.findArea();第12 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程13/1386.7 数据域的封装 System.out.println(“其半径为”+yourCircle.radius+“的圆面积为”+yourCircle
8、.findArea();/修改圆半径 yourCircle.radius=100;System.out.println(“其半径为”+yourCircle.radius+“的圆面积为”+yourCircle.findArea();问题:它允许通过对象直接访问数据域并进行修改(如yourCircle.radius=100),这样做使类难于维护并且不易调试。解决:使用private 修饰符限定radius 变量,使它成为私有的。这就称为数据域的封装。第13 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 14/1386.7 数据域的封装 产生了的新问题:客户经常需要存取、修改
9、数据域,怎么办?解决方法:可以编写一个get 方法返回数据值,这样客户就能访问私有数据域;编写一个set 方法进行修改数据值,这样客户就能修改私有数据域。通俗地把get 方法称为读取器或访问器,set称为设置器或修改器。第14 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程15/1386.7 数据域的封装 get 方法的形式:public()return;set 方法的形式:public void()=;第15 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 16/1386.7 数据域的封装 例6.2:修改例6.1,对类中方法进行封装。解答:程序如下
10、 class SimpleCircle private double radius;SimpleCircle()/*构造一个其半径为1 的圆对象*/radius=1.0;/*构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)/*构造一个由参数指定半径的圆对象*/radius=newRadius;第16 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程17/1386.7 数据域的封装/*返回私有变量Radius*/publiuc double getRadius()return radius;/*修改私有变量Radius*/publ
11、ic void setRadius(double newRadius)radius=newRadius;第17 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程18/1386.7 数据域的封装 double findArea()return radius*radius*3.14159;/*类定义结束*/public class TestSimpleCircle public static void main(String args)/创建一个半径为5 的圆对象 SimpleCircle myCircle;myCircle=new SimpleCircle(5);/创建一个半
12、径为1 的圆对象 SimpleCircle yourCircle;yourCircle=new SimpleCircle();System.out.println(“其半径为”+myCircle.getRadius()+“的圆面积为”+myCircle.findArea();第18 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 19/1386.7 数据域的封装 System.out.println(“其半径为”+yourCircle.getRadius()+“的圆面积为”+yourCircle.findArea();/修改圆半径 yourCircle.setRadius
13、(100);System.out.println(“其半径为”+yourCircle.getRadius()+“的圆面积为”+yourCircle.findArea();第19 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 20/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组 6.14 类的抽象和填封装第20 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程21/1386.8 永久对象和 永久类 我们先来回顾一下例6.2:它把例
14、6.1 中SimpleCircle 类的数据域进行了封装,即限定数据域为私有的,并引入了修改器以便客户通过它能进行修改私有数据。现在我们试想一下,如果把SimpleCircle 类修改器去掉即没有set 方法,则会有什么情况?回答是:SimpleCircle 类的对象的内容将永远不能再改变。此时,这种对象就称为永久对象。所谓永久对象就是一旦创建其内容就不能改变的对象,永久对象的类称为永久类。第21 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程22/1386.8 永久对象和 永久类 例6.3:把SimpleCircle 类改为一个永久类。解答:在例6.2 中去掉修改器即可
15、:class SimpleCircle private double radius;SimpleCircle()/*构造一个半径为1的圆对象*/radius=1.0;/*构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)/*构造一个由参数指定半径的圆对象*/radius=newRadius;第22 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程23/1386.8 永久对象和 永久类/*返回私有变量Radius*/public double getRadius()return radius;/*计算圆面积*/double find
16、Area()return radius*radius*3.14159;/*类定义结束*/第23 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 24/1386.8 永久对象和 永久类 注意:一个类的所有数据域都是私有的并且没有修改器,但,它不一定是永久类。为什么呢?因为:客户可以通过其它类对它进行修改。例如:下面的Student 类,其所有数据都是私有的并且没有修改器,但它不是永久的,因为客户可以通过BirthDate 类实现对它的修改:public class Student private int id;private BirthDate birthDate;/*引用
17、非永久对象*/第24 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程25/1386.8 永久对象和 永久类 public Student(int ssn,int year,int month,int day)id=ssn;birthDate=new BirthDate(year,month,day);public int getId()return id;public BirthDate getBirthDate()return birthDate;第25 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 26/1386.8 永久对象和 永久类 pub
18、lic class BirthDate/*非永久类*/private int year;private int month;private int day;public BirthDate(int newYear,int newMonth,int newDay)year=newYear;month=newMonth;day=newDay;第26 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 27/1386.8 永久对象和 永久类 public void setYear(int newYear)year=newYear;/*The end of class BirthDa
19、te*/下面的代码说明Student 不是永久类:public class Test public static void main(String args)Student student=new Student(11122333,1970,5,3);BirthDate date=student.getBirthDate;date.setYear(2010);第27 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程28/1386.8 永久对象和 永久类 分析:Student student=new Student(11122333,1970,5,3);第28 页,本讲稿共8
20、3 页楚雄师范学院计算机科学系 java 程序设计课程 29/1386.8 永久对象和 永久类 BirthDate date=student.getBirthDate;第29 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 30/1386.8 永久对象和 永久类 date.setYear(2010);第30 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 31/1386.8 永久对象和 永久类 结论:要使一个类成为永久类,必须将其所有数据域说明为私有的(private),并且其不含引用非永久对象的数据域.第31 页,本讲稿共83 页楚雄师范学院计算机
21、科学系 java 程序设计课程 32/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组第32 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程33/1386.9 给方法传递对象参数 到目前为止,我们已经学过如何将基本数据型参数和数组参数传递给方法.本节将学习如何把对象传递给方法.与传递数组一样,传递对象实际上是传递对象的引用.下面的例子把对象myCircle 作为参数传递给printCircle 方法:第33 页,本讲稿共83 页楚雄师范学院计算机科学系
22、 java 程序设计课程 34/1386.9 给方法传递对象参数 public class TestPassObject public static void main(String args)SimpleCircle myCircle=new SimpleCircle(5);printCircle(myCircle);public static void printCircle(SimpleCircle c)System.out.println(“其半径为”+c.getRadius+”的圆面积是”+c.findArea();第34 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序
23、设计课程35/1386.9 给方法传递对象参数 注意:Java 只有一种参数传递方式:值传递(pass by value).在上面的例子中,myCircle 的值传递给printCircle 方法,这个值是SimpleCircle 对象的引用值.第35 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程36/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组第36 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 37/1386.10 静
24、态变量、常量和静态方法 在前面的例子中,SimpleCircle 类中的变量radius 属于每一个对象实例,它不能被多个SimpleCircle 对象共享。例如:SimpleCircle circle1=new SimpleCircle(2);SimpleCircle circle2=new SimpleCircle(5);Circle1 中的radius 与circle2 中的radius 不是同一个变量,它们具有不同的存储空间,如下图所示:第37 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 38/1386.10 静态变量、常量和静态方法第38 页,本讲稿共83
25、页楚雄师范学院计算机科学系 java 程序设计课程 39/1386.10 静态变量、常量和静态方法 上述象radius 的这种变量称为实例变量。所以,类的实例变量就是其属于类中每一个对象实例,而不能被同一个类的不同对象共享的变量。那么,现在我们的问题是,如何让一个类中的所有实例(对象)共享数据?答案是:使用静态变量(又称为类变量)。静态变量将变量值存储于类的公用内存,为所有对象所共享。第39 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 40/1386.10 静态变量、常量和静态方法 例6.4:修改SimpleCircle 类,使它能记录当前共创建了多少个对象。分析:我
26、们在SimpleCircle 类中,定义一个静态变量numbersOfObject,其初始值为0,每创建一个对象就将该变量递增1,即在构造方法中增加语句:numbersOfObject+;解答:程序如下:第40 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程41/1386.10 静态变量、常量和静态方法 class SimpleCircle private double radius;private static int numbersOfObject=0;SimpleCircle()/*构造一个其半径为1 的圆对象*/radius=1.0;numbersOfObjec+
27、;/*构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)radius=newRadius;numbersOfObjec+;第41 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程42/1386.10 静态变量、常量和静态方法/*返回私有变量Radius*/public double getRadius()return radius;/*修改私有变量Radius*/public void setRadius(double newRadius)radius=newRadius;/*返回当前创建了的对象数目*/public static
28、 int getNumbersOfObjec()return numbersOfObjec;第42 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 43/1386.10 静态变量、常量和静态方法/*计算圆面积*/public double findArea()return radius*radius*3.14159;/*类定义结束*/下面使用UML 图说明实例变量与静态变量的差别:图中使用到的UML 符号:+:公用的-:私有的 下划线:静态变量或方法第43 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 44/1386.10 静态变量、常量和静态方法
29、第44 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 45/1386.10 静态变量、常量和静态方法 要声明一个常量,在静态变量声明中加上关键字final 即可。例如:在前例中,我们声明常量PI:第45 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程46/1386.10 静态变量、常量和静态方法 class SimpleCircle private double radius;private final static double PI=3.14159;private static int numbersOfObject=0;SimpleCircl
30、e()/*构造一个其半径为1 的圆对象*/radius=1.0;numbersOfObjec+;/*构造一个由参数指定半径的圆对象*/SimpleCircle(double newRadius)radius=newRadius;numbersOfObjec+;第46 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 47/1386.10 静态变量、常量和静态方法/*返回私有变量Radius*/publiuc double getRadius()return radius;/*修改私有变量Radius*/public void setRadius(double newRadi
31、us)radius=newRadius;/*返回当前创建了的对象数目*/public static int getNumbersOfObjec()return numbersOfObjec;第47 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程48/1386.10 静态变量、常量和静态方法/*计算圆面积*/public double findArea()return radius*radius*PI;/*类定义结束*/第48 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程49/1386.10 静态变量、常量和静态方法 前面,我们讲了实例变量与静态变量
32、,同样地,也有实例方法与静态方法。所谓静态方法就是不用创建类的实例(对象)就可以调用的方法。在方法声明中使用关键字static 可以定义一个静态方法。所谓实例方法就是只能在创建类的实例(对象)后调用的方法。在方法声明中没有关键字static,则该方法即为实例方法。第49 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 50/1386.10 静态变量、常量和静态方法 例:在前的例子中,getNumberOfObject方法被定义为一个静态方法,其它的方法是实例方法。实例方法按下列形式调用:.();静态方法按下列形式之一调用:.();.();第50 页,本讲稿共83 页楚雄师
33、范学院计算机科学系 java 程序设计课程51/1386.10 静态变量、常量和静态方法 注意:静态方法和静态变量既可以在类的实例方法中使用,也可以在类的静态方法中使用。但是,实例方法和实例变量只能在类的实例方法中使用,而不能在类的静态方法中使用。例,下面给出的代码就是错误的:public class F int i=5;static int k=2;第51 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 52/1386.10 静态变量、常量和静态方法 public static void main(String args)int j=i;/*错误,因为i 是一个实例变量
34、*/m1();/*错误,因为m1 是一个实例方法*/public void m1()i=i+k+m2();/*正确*/public static int m2(int i,int j)return(int)(Math.pow(i,j);第52 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程53/1386.10 静态变量、常量和静态方法 最后,如何判断一个变量或方法定义为实例的不是静态的?如果一变量或方法依赖于类的具体实例,就应该定义为实例变量或实例方法;如果一变量或方法不依赖于类的具体实例,就应该定义为静态变量或静态方法。第53 页,本讲稿共83 页楚雄师范学院计算机科学
35、系 java 程序设计课程 54/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组第54 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程55/1386.11 变量的作用域 在方法一章中,我们讨论过局部变量和它们的作用域,本节将讨论所有变量的作用域.类的实例变量和静态变量称为类属变量(class s variable)或数据域(data field),定义在方法内部的变量称为局部变量.不管在何处声明,类属变量的作用域是整个类.类属变量和方法在类中可以按任
36、意顺序声明,如图6.15(a)所示,但当一个数据域第55 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 56/1386.11 变量的作用域 需要引用另一个数据域来进行初始化时,被引用的数据域必须先声明,如图6-15(b)所示.第56 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程57/1386.11 变量的作用域 类属变量只能声明一次.但是在方法内不同的非嵌套块中,可以多次声明相同的变量.如果局部变量和一个类属变量具有相同的名字,那么局部变量优先,同名的类属变量将被隐藏.例如,在下面的程序中,x 声明为实例变量,同时在方法中也使用了x 作为名来声明
37、为局部变量:第57 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程58/1386.11 变量的作用域 class F int x=0;int y=0;F()void p()int x=1;System.out.println(“x=”+x);System.out.println(“y=”+y);第58 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程59/1386.11 变量的作用域 我们测试运行这个类的程序是:public class E611 public static void main(String args)F f=new F();f.p()
38、;结果是:x=1 Y=0第59 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程60/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组第60 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程61/1386.12 关键字this 我们先来看一个例子:public class E612 public static void main(String args)F f=new F();/*图6.6(a)所示*/f.setX(1);/*图6.6
39、(b)所示*/f.p();第61 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程62/1386.12 关键字this class F private static int x=0;private int y=0;F()public void setX(int x)F.x=x;第62 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 63/1386.12 关键字this void p()System.out.println(x=+x);System.out.println(y=+y);执行上述程序,其结果为:x=1 y=0第63 页,本讲稿共83 页楚雄
40、师范学院计算机科学系 java 程序设计课程64/1386.12 关键字this第64 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程65/1386.12 关键字this 通过分析我们可以认识到:在类的方法setX 中,通过使用F.x,我们把类的成员x(它是一个静态变量)与方法的局部变量x 区分开.问题:如果类的成员x 不是静态变量时,如何区分?回答是:使用this.x 来进行区分。例如,把前例中x 改为实例变量后的情形:第65 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程66/1386.12 关键字this public class E612 p
41、ublic static void main(String args)F f=new F();/*图6.7(a)所示*/f.setX(1);/*图6.7(b)所示*/f.p();第66 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 67/1386.12 关键字this class F private int x=0;private int y=0;F()public void setX(int x)this.x=x;第67 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程68/1386.12 关键字this void p()System.out.pr
42、intln(x=+x);System.out.println(y=+y);执行上述程序,其结果为:x=1 y=0第68 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 69/1386.12 关键字this第69 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 70/1386.12 关键字this 在方法中区分所属类的类属变量和方法中的局部变量(如果它们同名时)的方法称为使用类属隐藏变量 从前面我们已经知道:隐藏的静态变量可以简单地通过“.”的方式引用。隐藏的实例变量使用“this.”的方式引用。为了进一步的理解this 的作用,我们修改前例中测试F
43、类的语句并用图进行说明:第70 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 71/1386.12 关键字this public class E612 public static void main(String args)F f1=new F();/*图6-8(a)所示*/F f2=new F();/*图6-8(b)所示*/f1.setX(1);/*图6.8(c)所示*/f2.setX(2);/*图6.8(d)所示*/f1.p();f2.p();第71 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 72/1386.12 关键字this第72 页
44、,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 73/1386.12 关键字this第73 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 74/1386.12 关键字this 注意1:关键字this 也可以用于类的构造方法;注意2:关键字this 可以用来指(或调用)构造方法,此时调用语句的格式为:this();具体调用哪一个构造方法,就看 的参数个数和类型与哪一个方法匹配。例如:第74 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 75/1386.12 关键字this class F private int x;privat
45、e int y;private double z;F()this(0);F(int x)this.x=x;第75 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程76/1386.12 关键字this F(int y,double z)this.z=z;this.y=y;F(int x,int y,double z)this(x);this(y,z);public void setX(int x)this.x=x;第76 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程77/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变
46、量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组第77 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程78/1386.13 对象数组 所谓对象数组是指其所有元素都是对象的引用的数组。声明对象数组的语法格式为:=new;例如:创建具有8 个元素的SimpleCircle 对象数组:SimpleCircle circleArray=new SimpleCircle8;/*见下图*/第78 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 79/1386.13 对象数组第79 页,本讲稿共83 页楚雄师范学院计算机科学
47、系 java 程序设计课程 80/1386.13 对象数组 初始化对象数组,可以使用循环:for(int i=0;icircleArray.length;i+)circleArrayi=new SimpleCircle();/*见下图*/第80 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 81/1386.13 对象数组第81 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程82/1386.13 对象数组 计算所有圆的面积之和,可以使用循环:double sumOfArea=0;for(int i=0;icircleArray.length;i+)sumOfArea+=circleArrayi.findArea();第82 页,本讲稿共83 页楚雄师范学院计算机科学系 java 程序设计课程 83/138内容摘要 6.8 永久对象和类 6.9 给方法传递对象参数 6.10 静态变量、常量和静态方法 6.11 变量的作用域 6.12 关键字this 6.13 对象数组 6.14 类的抽象和封装第83 页,本讲稿共83 页
限制150内