Java第4章类与对象.ppt
《Java第4章类与对象.ppt》由会员分享,可在线阅读,更多相关《Java第4章类与对象.ppt(77页珍藏版)》请在三一办公上搜索。
1、第4章 类与对象,本章导读1、面向对象编程2、类声明和类体3、类体的构成4、构造方法与对象的创建5、对象的引用与实体6、成员变量7、方法8、方法重载,本章导读9、this关键字10、包11、import 语句12、访问权限13、对象的组合14、基本类型数据的类包装15、反编译和文档生成器16、JAR文件,4.1 面向对象编程,封装将数据以及对数据的操作封装在类中。继承子类可以继承父类的属性(数据)和功能(操作)多态操作名称的多态&和继承有关的多态 操作名称的多态:是指可以向操作传递不同消息,以便让对象调用时可能产生不同的行为。和继承有关的多态:是指同一个操作被不同类型对象调用时可能产生不同的行
2、为。,4.2 类声明和类体,类是组成Java程序的基本要素,类封装了一类对象的状态和方法。类是用来定义对象的模板,可以用类创建对象。当使用一个类创建了一个对象时,我们也说给出了这个类的一个实例。在语法上,类由两部分构成:类声明和类体基本格式为:,class 类名 类体的内容,class dog,class 机动车,类名:类名必须是合法的Java标识符,不能是Java中的关键字。给类命名时,最好遵守下列习惯:如果类名使用拉丁字母,那么名字的首字母使用 大写字母如:Hello、Time、People类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首写字母使用大写。如:Beij
3、ingTime、AmericanGame、HelloChina,返回,4.3 类体的构成,写类的目的是为了描述一类事物共有的属性和功能,即将数据和对数据的操作封装在一起,这一过程由类体来实现。类体内容可以有2种类型的成员:成员变量(或域)在类体声明定义的变量,用来刻画类创建的对象的属性。成员方法(1)由类所创建的对象调用,对象调用这些方法操作成员变量形成一定的算法,体现对象具有某种功能。(2)构造方法是具有特殊地位的方法,供类创建对象时使用,用来给出类所创建的对象的初始状态。,class 机动车 int speed;/变量定义部分 float weight,height;/变量定义部分 voi
4、d changSpeed(int newSpeed)/方法定义 speed=newSpeed;float getWeight()/方法定义 return weight;float getHeight()/方法定义 return height;,例:机动车类,例:机动车类成员变量有2个float类型的变量:“weight”、“height”和一个int型变量“speed”。成员方法有3个:“changSpeed”、“getWeight”和“getHeight”。对成员变量的说明:(1)成员变量的类型可以是Java中的任何一种数据类型,包括前面学习过的基本类型:整型、浮点型、字符型、数组以及后面要
5、学习的对象及接口。(2)成员变量在整个类内都有效,与它在类体中书写的先后位置无关。例如:机动车类也可以写成机动车2,class 机动车2 void changSpeed(int newSpeed)/方法定义 speed=newSpeed;int speed;/变量定义部分 float getWeight()/方法定义 return weight;float weight;/变量定义部分 float getHeight()/方法定义 return height;float height;/变量定义部分,机动车2,对成员变量的说明:(3)在定义类的成员变量时可以同时赋予初值,表明类所创建的对象的初
6、始状态。(4)对成员变量的操作只能放在方法中,方法可以对成员变量进行操作形成算法(合法、非法)类的成员类型中可以有数据和方法(即数据的定义和方法的定义)但不能有语句,语句必须放在方法中。,返回,class A int a=9;float b=12.6f;void f()a=12;b=12.56f;,合法,class A int a;float b;a=12;/非法,a=12是赋值语句,不是数据 的声明 b=12.56f;/非法 void f(),非法,4.4 构造方法与对象的创建,1、构造方法2、对象的创建1)对象的声明2)为声明的对象分配成员变量3)创建多个不同的对象3、使用对象,4.4.1
7、 构造方法,在类创建对象时使用构造方法,以便给类所创建的对象一个合理的初始状态。构造方法的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型,即它是void型,但void必须省略不写。Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同(构造函数重载)。例:Rect类,class Rect double sideA,sideB;Rect()/无参数构造方法。Rect(double a,double b)/有参数构造方法。sideA=a;sideB=b;,Rect类,double computerArea()return sid
8、eA*sideB;double computerGirth()return(sizeA+sideB)*2;,4.4.2 对象的创建,当使用一个类创建了一个对象时,我们也说给出了这个类的一个实例。创建对象的步骤(2步):1、声明对象2、为对象分配成员变量,4.4.2.1 声明对象,格式:类名 对象名;Rect rectangleOne;用类声明的数据称为类类型变量,即对象。刚刚声明的对象其内存中没有存放任何数据,它没有“引用”任何实体,是一个空对象。空对象是不能使用的。,rectangleOne,null,4.4.2.2 为对象分配成员变量,格式:对象名=new 类的构造方法;上述的Rect类提
9、供了2个构造方法,下面都是合法的创建对象的语句。rectangleOne=new Rect();rectangleOne=new Rect(10,20);如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的)。如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。如果上述Rect只提供一个带参数的构造方法,代码“rectangleOne=new Rect();”是非法的。,创建对象的代码“rectangleOne=new Rect(10,20);”会实现下述两件事:1、为成员变量分配内存空间,然后执行构造方法中的语句。2、给出一个信息,已确保这些成员变量是属于
10、对象 rectangleOne的(返回一个引用,由引用来“操作管理”这些成员变量)。,rectangleOne,10,20,side A,side B,0 xFFFFF,称sideA、sideB的内存单元是属于对象rectangleOne的实体或属于rectangleOne的成员变量,即这些变量由对象rectangleOne操作管理。,说明:,创建对象就是指为它分配成员变量,并获得一个引用,以确保这些成员变量由它操作管理。对象是一种类类型变量,属于引用型变量,即对象变量中存放着引用。所谓引用型变量,就是用来存放成为“引用”的地址号,而且引用型变量可以操作它所引用的变量。Java中引用与C+中指
11、针的比较:相同点:引用型变量和指针变量都用来存放一个地址号。不同点:引用型变量不能像指针变量那样任意地分配内存地址,或像整数一样来操作它。,4.4.2.3 创建多个不同的对象,一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分配不同的内存空间。改变其中一个对象的状态不会影响其它对象的状态。例如,使用前面的Rect类创建两个对象:rectOne=new Rect(10,20);rectTwo=new Rect(33,66);这两个对象所占据的内存空间是互不相同的位置,具有不同的实体。,rectOne,10,20,side A,side B,0 xFFE,33,66,side A,s
12、ide B,rectTwo,0 xFFF,4.4.3 使用对象,对象不仅可以操作自己的变量改变状态,而且还可以调用创建它的那个类中的方法,对象通过使用这些方法可以产生一定的行为。通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。对象操作自己的变量(对象的属性)。对象调用类中的方法(对象的功能)。注:当对象调用方法时,方法中的局部变量被分配内存空间。方法执行完毕,局部变量即刻释放内存。如果局部变量声明时如果没有初始化,就没有默认值,所以在使用局部变量之前,要事先为其赋值。例4-1,使用“Lader”类的构造方法创建了两个对象 laderOne,laderTwo.,返回,class
13、Lader double above,bottom,height;Lader()Lader(double a,double b,double h)above=a;bottom=b;height=h;public void setAbove(double a)above=a;public void setBottom(double b)bottom=b;public void setHeight(double h)height=h;,例4-1,double computeArea()return(above+bottom)*height/2.0;public class Example4_1 p
14、ublic static void main(String args)double area1=0,area2=0;Lader laderOne,laderTwo;laderOne=new Lader();laderTwo=new Lader(10,88,20);laderOne.setAbove(16);laderOne.setBottom(26);laderOne.setHeight(100);laderTwo.setAbove(300);laderTwo.setBottom(500);area1=laderOputeArea();area2=laderTputeArea();,Syste
15、m.out.println(laderOne的above,bottom和height:+laderOne.above+,+laderOne.bottom+,+laderOne.height);System.out.println(laderOne的面积:+area1);System.out.println(laderTwo的above,bottom和height:+laderTwo.above+,+laderTwo.bottom+,+laderTwo.height);System.out.println(laderTwo的面积:+area2);,laderOne的above,bottom和he
16、ight:16.0,26.0,100.0laderOne的面积:2100.0laderTwo的above,bottom和height:300.0,500.0,20.0laderTwo的面积:8000.0,运行结果:,4.5 对象的引用与实体,当用类创建一个对象时,成员变量被分配内存空间,这些内存空间称做该对象的实体或变量,而对象中存放着引用,以确保这些变量由该对象操作使用。如果两个对象有相同的引用,那么就具有同样的实体,t1=new Lader(11,22,33);,11,22,above,bottom,t1,0 xEEE,33,height,6,12,above,bottom,t2,0 xF
17、FF,18,height,t2=new Lader(6,12,18);,t2=t1;,0 xEEE,t2=null;,null,Java具有“垃圾收集”机制Java的运行环境周期地检测某个实体是否已不再被任何对象所引用,如果发现这样的实体,就释放实体占有的内存。Java编程人员不必象C+程序员那样,要时刻自己检查哪些对象应该释放内存。没有实体的对象称作空对象。空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以Java的编译器对空对象不做检查;因此,在编写程序时要避免使用空
18、对象。,返回,4.6 成员变量,1、成员变量成员变量用来刻画类创建对象的属性,分为实例变量和类变量。没有使用static修饰的成员变量称作实例变量。用关键字static修饰的成员变量称作类变量或静态变量。,class A float x;static int y;,实例变量不同对象的实例变量互不相同,即分配不同的内存空间,改变其中一个实例变量不会影响其它对象的相应实例变量。实例变量仅仅是与相应的对象关联的变量。实例变量必须通过对象访问。,A a1=new A();,0,x,0 xff,a1,0,y,0,x,0 xdd,a2,3,A a2=new A();,a1.x=3;,下面程序接上一页程序,
19、类变量对于类变量而言,所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。类变量是和该类所创建的所有对象相关联的变量。类变量不仅可以通过某个对象访问,也可以直接通过类名访问。,A a1=new A();,0,x,0 xff,a1,0,y,0,x,0 xdd,a2,3,A a2=new A();,a1.x=3;,a2.y=4;,A.y=5;,5,4,例4-2:两个“Lader”对象共享bottom,class Lader double above,height;/实例变量 static double bottom;/类变量 void setA
20、bove(double a)above=a;void setBottom(double b)bottom=b;double getAbove()return above;double getBottom()return bottom;,例4-2,class Example4_2 public static void main(String args)Lader.bottom=60;/Lader的字节码被加载到内存,/通过类名操作类变量 Lader laderOne,laderTwo;System.out.println(现在所有Lader对象的bottom都是+Lader.bottom);la
21、derOne=new Lader();laderTwo=new Lader();System.out.println(laderOne的bottom:+laderOne.getBottom();System.out.println(laderTwo的bottom:+laderTwo.getBottom();laderOne.setAbove(11);laderTwo.setAbove(22);laderTwo.setBottom(100);,System.out.println(现在所有Lader对象的bottom都是+Lader.bottom);System.out.println(lade
22、rOne的above:+laderOne.getAbove();System.out.println(laderTwo的above:+laderTwo.getAbove();,2、常量如果一个成员变量修饰为final,就是常量,常量的名字习惯用大写字母。final int MAX;final修饰的成员变量不占用内存,这意味着在声明final 成员变量时,必须要初始化。对于final 修饰的成员变量,对象可以操作使用,但不能做更改操作(例4-3)。,返回,class Tom final int MAX=100;static final int MIN=20;public class Exampl
23、e4_3 public static void main(String args)System.out.println(Tom.MIN);Tom cat=new Tom();int x=0;x=Tom.MIN+cat.MAX;System.out.println(x);,例4-3,4.7 方法,一部分方法称作构造方法,供类创建对象时使用,用来给出类所创建的对象的初始状态。对象不可以调用构造方法,构造方法是专门用来创建对象的。另一部分方法可分为实例方法和类方法,类所创建的对象可以调用这些方法形成一定的算法,体现对象具有某种功能。1、方法的定义2、方法体的构成3、实例方法与类方法4、参数传值,4.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 对象
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6510064.html