欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java第4章类与对象.ppt

    • 资源ID:6510064       资源大小:213.50KB        全文页数:77页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java第4章类与对象.ppt

    第4章 类与对象,本章导读1、面向对象编程2、类声明和类体3、类体的构成4、构造方法与对象的创建5、对象的引用与实体6、成员变量7、方法8、方法重载,本章导读9、this关键字10、包11、import 语句12、访问权限13、对象的组合14、基本类型数据的类包装15、反编译和文档生成器16、JAR文件,4.1 面向对象编程,封装将数据以及对数据的操作封装在类中。继承子类可以继承父类的属性(数据)和功能(操作)多态操作名称的多态&和继承有关的多态 操作名称的多态:是指可以向操作传递不同消息,以便让对象调用时可能产生不同的行为。和继承有关的多态:是指同一个操作被不同类型对象调用时可能产生不同的行为。,4.2 类声明和类体,类是组成Java程序的基本要素,类封装了一类对象的状态和方法。类是用来定义对象的模板,可以用类创建对象。当使用一个类创建了一个对象时,我们也说给出了这个类的一个实例。在语法上,类由两部分构成:类声明和类体基本格式为:,class 类名 类体的内容,class dog,class 机动车,类名:类名必须是合法的Java标识符,不能是Java中的关键字。给类命名时,最好遵守下列习惯:如果类名使用拉丁字母,那么名字的首字母使用 大写字母如:Hello、Time、People类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首写字母使用大写。如:BeijingTime、AmericanGame、HelloChina,返回,4.3 类体的构成,写类的目的是为了描述一类事物共有的属性和功能,即将数据和对数据的操作封装在一起,这一过程由类体来实现。类体内容可以有2种类型的成员:成员变量(或域)在类体声明定义的变量,用来刻画类创建的对象的属性。成员方法(1)由类所创建的对象调用,对象调用这些方法操作成员变量形成一定的算法,体现对象具有某种功能。(2)构造方法是具有特殊地位的方法,供类创建对象时使用,用来给出类所创建的对象的初始状态。,class 机动车 int speed;/变量定义部分 float weight,height;/变量定义部分 void 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中的任何一种数据类型,包括前面学习过的基本类型:整型、浮点型、字符型、数组以及后面要学习的对象及接口。(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)在定义类的成员变量时可以同时赋予初值,表明类所创建的对象的初始状态。(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 构造方法,在类创建对象时使用构造方法,以便给类所创建的对象一个合理的初始状态。构造方法的名字必须与它所在的类的名字完全相同,并且不返回任何数据类型,即它是void型,但void必须省略不写。Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同(构造函数重载)。例:Rect类,class Rect double sideA,sideB;Rect()/无参数构造方法。Rect(double a,double b)/有参数构造方法。sideA=a;sideB=b;,Rect类,double computerArea()return sideA*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类提供了2个构造方法,下面都是合法的创建对象的语句。rectangleOne=new Rect();rectangleOne=new Rect(10,20);如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的)。如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。如果上述Rect只提供一个带参数的构造方法,代码“rectangleOne=new Rect();”是非法的。,创建对象的代码“rectangleOne=new Rect(10,20);”会实现下述两件事:1、为成员变量分配内存空间,然后执行构造方法中的语句。2、给出一个信息,已确保这些成员变量是属于对象 rectangleOne的(返回一个引用,由引用来“操作管理”这些成员变量)。,rectangleOne,10,20,side A,side B,0 xFFFFF,称sideA、sideB的内存单元是属于对象rectangleOne的实体或属于rectangleOne的成员变量,即这些变量由对象rectangleOne操作管理。,说明:,创建对象就是指为它分配成员变量,并获得一个引用,以确保这些成员变量由它操作管理。对象是一种类类型变量,属于引用型变量,即对象变量中存放着引用。所谓引用型变量,就是用来存放成为“引用”的地址号,而且引用型变量可以操作它所引用的变量。Java中引用与C+中指针的比较:相同点:引用型变量和指针变量都用来存放一个地址号。不同点:引用型变量不能像指针变量那样任意地分配内存地址,或像整数一样来操作它。,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,side B,rectTwo,0 xFFF,4.4.3 使用对象,对象不仅可以操作自己的变量改变状态,而且还可以调用创建它的那个类中的方法,对象通过使用这些方法可以产生一定的行为。通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。对象操作自己的变量(对象的属性)。对象调用类中的方法(对象的功能)。注:当对象调用方法时,方法中的局部变量被分配内存空间。方法执行完毕,局部变量即刻释放内存。如果局部变量声明时如果没有初始化,就没有默认值,所以在使用局部变量之前,要事先为其赋值。例4-1,使用“Lader”类的构造方法创建了两个对象 laderOne,laderTwo.,返回,class 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 public 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();,System.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和height: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 xFFF,18,height,t2=new Lader(6,12,18);,t2=t1;,0 xEEE,t2=null;,null,Java具有“垃圾收集”机制Java的运行环境周期地检测某个实体是否已不再被任何对象所引用,如果发现这样的实体,就释放实体占有的内存。Java编程人员不必象C+程序员那样,要时刻自己检查哪些对象应该释放内存。没有实体的对象称作空对象。空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以Java的编译器对空对象不做检查;因此,在编写程序时要避免使用空对象。,返回,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;,下面程序接上一页程序,类变量对于类变量而言,所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量就同时改变了其它对象的这个类变量。类变量是和该类所创建的所有对象相关联的变量。类变量不仅可以通过某个对象访问,也可以直接通过类名访问。,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 setAbove(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);laderOne=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(laderOne的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 Example4_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.7.1 方法的定义,包括两部分:方法声明和方法体最基本的方法声明包括方法名和方法的返回类型,返回类型也简称作方法的类型。,方法的声明 方法体的内容,float area(),在给方法起名字时应遵守以下习惯:名字如果使用拉丁字母,首写字母使用小写。如果由多个单词组成,从第2个单词开始的其它单词的首写字母使用大写。float getTrangleArea()void setCircleRadius(double radius)方法声明之后的一对大括号“”、“”以及之间的内容称作方法的方法体;类中的方法必须要有方法体如果方法的类型是void类型,方法体中也可以不书写任何语句,4.7.2 方法体的构成,方法体的内容包括变量的定义和合法的Java语句。在方法体中声明的变量以及方法的参数称作局部变量,局部变量仅仅在该方法内有效。方法的参数在整个方法内有效,方法内定义的局部变量从它定义的位置之后开始有效。局部变量的名字必须符合标识符规定,遵守习惯:名字如果使用拉丁字母,首写字母使用小写;如果由多个单词组成,从第2个单词开始的其它单词的首写字母使用大写。,float area(float height,float width)float c;c=height*width;return c;,4.7.3 实例方法与类方法,除构造方法外,其他的方法可分为实例方法或类方法。方法声明中用关键字static修饰的称作类方法或静态方法,不用static修饰的称作实例方法一个类中的方法可以互相调用实例方法可以调用该类中实例方法或类方法。类方法只能调用该类的类方法,不能调用实例方法。例如:A类的max方法和getMaxSqrt方法是类方法;sum和min方法是实例方法,class A float a,b;void sum(float x,float y)a=max(x,y);b=min(x,y);static float getMaxSqrt(float x,float y)float c;c=max(x,y)*max(x,y);return c;,static float max(float x,float y)return xy?x:y;float min(float x,float y)return xy?x:y;,方法对成员变量的操作实例方法可以操作成员变量,无论是实例变量或类变量。类方法只能操作类变量不能操作实例变量,也就是说类方法中不能有操作实例变量的语句二者为何有着这样的区别呢:实例方法必须通过对象来调用类方法可以通过类名调用无论类方法或实例方法,当被调用执行时,方法中的局部变量才被分配内存空间;方法调用完毕,局部变量即刻释放所占的内存。例4-4,通过类名调用类方法,4.7.4 参数传值,当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值在Java中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定值的拷贝基本数据类型参数的传值比如:向方法的int型参数x传递一个int值,那么参数x得到的值是传递值的拷贝方法如果改变参数的值,不会影响向参数“传值”的变量的值例4-5,向一个方法的基本型参数传值,引用类型参数的传值Java的引用型数据包括我们以前学习过的对象、数组 以及后面将要学习的接口当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化改变参数的引用不会影响向其传值的变量的引用,0 xdddd,引用型实参,null,引用型行参,实体,0 xdddd,例4-6,向一个方法的引用型参数传值tom调用方法f把对象jerry的引用“传值”给参数a后,对象jerry和对象a就具有同样的成员变量,即同样实体;因此,jerry和a就具有同样的功能,也就是说a调用方法产生的行为和jerry调用同一方法产生的行为完全相同当对象a执行 a=null;后,a就不再有任何实体,变成一个空对象,如果再执行:a.setLeg(100);就会引起NullPointerExcetion异常;但是,jerry的引用没有发生任何变化,它依然引用着原来的实体,仍然可以调用方法产生行为例4-7中,“Cone”类在创建对象时,将一个“Circle”对象的引用“传值”给“Cone”对象的“bottom”,返回,4.8 方法重载(函数重载),指一个类中可以有多个方法具有相同的名字但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同方法的返回类型和参数的名字不参与比较;也就是说,如果两个方法的名字相同,即使类型不同,也必须保证参数不同方法重载是功能的多态性例4-8 Area类中getArea方法是一个重载方法,返回,4.9 this关键字,this关键字可以出现在类的构造方法中,代表使用该构造方法所创建的对象(例4-9)this关键字可以出现在类的实例方法中,代表使用该方法的当前对象(例如)实例方法可以操作成员变量,实际上,当成员变量在实例方法中出现时,默认的格式是:“this.成员变量”实例方法可以调用类的其它方法,调用的默认格式是:“this.方法”通常情况下,可以省略成员变量和成员方法前面的“this.”,类方法中不可以使用this类方法可以通过类名直接调用,这时可能还没有任何对象诞生使用this区分成员变量和局部变量成员变量在整个类内有效,局部变量仅在方法内有效在方法体中声明的变量以及方法的参数称作局部变量;方法的参数在整个方法内有效、方法内定义的局部变量从它定义的位置之后开始有效如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效(例如4-8-1)这时如果想在该方法内使用成员变量,成员变量前面的“this.”就不可以省略(例如4-8-2),返回,4.10 包,包是Java中有效管理类的一种机制,一般是将功能相关或相近的类放在同一个包中通过关键字package声明包语句,其一般格式为:package 包名;package 语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包的一部分,即源文件中定义命名的类在同一个包中,但该包没有名字,包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,如:package sunrise;package;程序使用了包语句后的编译和执行例如 package tom.jiafei;则你的系统必须包含有这样的结构“tomjiafei”(比如c:1000tomjiafei),并且要确保源文件编译后得到的全部字节码文件拷贝到目录c:1000tomjiafei中运行程序时必须到tomjiafei的上一层目录1000中来运行例4-10,包名和类名合在一起成为类的全名(tom.jiafei.Example),就好比大连的全名是:“中国.辽宁.大连”包名应该避免与其他包名冲突Sun公司建议大家使用自己所在公司的Internet域名倒置后做包名例如,将域名“”的倒置“.sina”做包名使用参数“d”编译源文件 如果源文件没有包名,使用参数-d可以将字节码文件存放到你指定的有效目录中javac d F:tsinghua1000 MyFile.java,返回,4.11 import语句,在编程时,如果要使用Java或别人提供的类,那么就要在使用该类之前用import 语句将其引入到我们的文件中一个Java源程序可以有多个import语句,但必须写在package语句之后、源文件中类的定义之前 格式:import java.io.*;引入包中所有的类import java.util.Date;只引入包中的Date类1、使用类库中的类2、使用自定义包中的类3、使用无名包中的类4、避免类名混淆,4.11.1 使用类库中的类,Java为我们提供了大约130包,如:java.applet 包含所有的实现Java applet的类java.awt 包含抽象窗口工具集中的图形、文本、窗口GUI类java.awt.image 包含抽象窗口工具集中的图像处理类java.lang 包含所有的基本语言类java.io 包含所有的输入输出类 包含所有实现网络功能的类java.until 包含有用的数据类型类,java.lang包是Java语言的核心类库,包含了运行Java程序必不可少的系统类;系统会自动引入java.lang这个包中全部的类如果使用import语句引入了整个包中的类,那么可能会增加编译时间;但绝对不会影响程序运行的性能Java运行平台由所需要的Java类库和虚拟机组成,这些类库被包含在jrelib目录下的压缩文件rt.jar中,当程序执行时,Java运行平台从类库中加载程序真正使用的类字节码到内存例4-11使用了java.util包中的Date类,用来显示本机的当前时间,4.11.2 使用自定义包中的类,可以自己定义一个包,供我们自己或他人使用也可以对单独的一个类进行 编译,生成字节码文件然后供其它类使用使用自定义包中类,关键是要设置好系统环境变量classpath,以使JVM在运行时能够找到我们所定义的包例4-12的源文件保存在 c:like目录中,并用import语句引入包tom.jiafei中的SquareEquation类,4.11.3 使用无名包中的类,假如上述SquareEquation.java源文件中没有使用包语句,SquareEquation类将是一个无名包中的类如果一个程序要使用SquareEquation类,将该类的字节码文件存放在当前程序所在的目录中即可,4.11.4 避免类名混淆,类的加载Java运行环境总是先到程序所在目录中寻找程序所使用的类,然后加载到内存如果在当前目录没有发现所需要的类,就到import语句所指的包中查找如果在当前目录找到了所需要的类,就不会再加载import语句引入的同名类如果使用import语句引入的2个包中有同名类,那么程序在使用该类时必须使用类的全名(包名.类名),返回,4.12 访问权限,类有两种成员:成员变量和成员方法;类创建的对象可以通过“.”运算符访问分配给自己的变量,也可以通过“.”运算符调用类中的实例方法和类方法类在定义声明成员变量和方法时,可以用关键字private、protected和public来说明成员变量和方法的访问权限,使得对象访问自己的变量和使用方法受到一定的限制有四种访问权限共有的 用public修饰的成员私有的 用private修饰的成员受保护的 用protected修饰的成员友好的 没有关键字修饰的成员,私有变量和私有方法用关键字private修饰的成员变量和方法只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法例4-13例4-14,共有变量和共有方法用public修饰的成员变量和方法当我们在任何一个类中用类A 创建了一个对象后,该 对象能访问自己的共有变量和类中的共有方法,Class Apublic float weight;public float f(),Class Bvoid g()A a=new A();a.weight=23f;a.f();,友好变量和友好方法不用private、public、protected修饰符的成员变量和方法假如B与A是同一个包中的类,那么,下述B类中的a.weight、a.f(3,4)都是合法的,Class Afloat weight;float f(),Class Bvoid g()A a=new A();a.weight=23f;a.f();,受保护的成员变量和方法用关键字protected修饰的成员变量和方法假如B与A是同一个包中的类,那么,下述B类中的a.weight、a.f(3,4)都是合法的,Class Aprotected float weight;protected float f(),Class Bvoid g()A a=new A();a.weight=23f;a.f();,包1,包2,类A,类B,类C,A a1=new A();,A a2=new A();,A a3=new A();,a1可以访问其所有的成员,a2可以访问其共有的、受保护的和友好的成员,a3可以访问其共有的成员,类A中的成员:public int a;private int b;protected int c;int d;,访问权限的规定(在不同位置创建的对象可以访问什么样权限的成员)在类A中创建该类的对象a,a可以访问自己的所有成员假如类B与类A是同一个包中的类,那么,在B类中创建类A的对象a,a可以访问自己的共有的、受保护的和友好的成员假如类C与类A不是同一个包中的类,那么,在B类中创建类A的对象a,a可以访问自己的共有的成员,访问权限的规定(不同访问权限的成员可以被什么样的对象所访问)共有的:在任何一个类中用类A 创建了一个对象后,该对象能访问自己的共有成员私有的:只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员受保护的、友好的:在本类中创建该类的对象、或与类A同在一个包中的其他类中创建的该类对象,这个对象可以访问自己的受保护的或友好的成员,假设对象a是A类创建的,对象对成员的访问权限可总结如下,表4.1 对象访问成员,public类与友好类类声明时,如果关键字class前面加上public关键字,就称这样的是一个public类类声明时,如果关键字class前面没有public关键字,就称这样的是一个友好类 不能用protected和private修饰类可以在任何另外一个类中,使用public类创建对象在另外一个类中使用友好类创建对象时,要保证它们是在同一个包中,关于构造方法private、public、protected修饰符的意义也同样适合于构造方法如果一个类没有明确地声明构造方法,那么public类的默认构造方法是public的,友好类的默认构造方法是友好的需要注意的是,如果一个public类定义声明的构造方法中没有public的,那么在另外一个类中使用该类创建对象时,使用的构造方法就不是public的,创建对象就受到一定的限制,返回,4.13 对象的组合,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为自己的组成部分这就是人们常说的“Has-A”或者说该对象是由几个对象组合而成 例4-15(P71),4.14 基本数据类型的类包装,Java的基本数据类型包括:byte、int、short、long、float、double、charJava同时也提供了基本数据类型相关的类,实现了对基本数据类型的封装,分别是:Byte、Integer、Short、Long、Float、Double、Character这些类在java.lang包中,使用基本数据类型构造相应的封装对象 Byte(byte num)Integer(int num)Short(short num)Long(long num)Float(float num)Double(double num)Character(char num),封装对象调用相应方法返回对应的基本数据类型 byteValue()intValue()shortValue()longValue()floatValue()doubleValue()charValue(),Character类中的一些常用类方法(可以直接通过类名调用):public static boolean isDigit(char ch)public static boolean isLetter(char ch)public static boolean isLetterOrDigit(char ch)public static boolean isLowerCase(char ch)public static boolean isUpperCase(char ch)public static char toLowerCase(char ch)public static char toUpperCase(char ch)public static boolean isSpaceChar(char ch)例4-16中,将一个字符数组中的小写字母变成大写字母,并将大写字母变成小写字母,返回,4.15 反编译和文档生成器,使用SDK提供的反编译器:javap.exe可以将字节码反编译为源码,查看源码类中的public方法和变量使用SDK提供的javadoc.exe可以制做源文件类结构的 html格式文档javadoc Example.javajavadoc d F:gxybook Example.java,返回,4.16 JAR文件,Java应用程序在运行时,需要将使用到的字节码文件加载到内存,因此对字节码文件所在的位置就有特殊的要求主要有以下四种情形:使用当前应用程序所在目录中没有包名的类;可以直接加载使用使用应用程序当前目录的子孙目录中的类;使用import语句引入相应包中的类使用java运行环境中类库中的类;使用import语句引入相应包中的类使用Java运行环境扩展中的类,使用Java运行环境扩展中的类使用 jar.exe把一些类的字节码压缩成一个JAR文件将JAR文件存放到Java运行环境的扩展中,即将该JAR文件存放在JDK安装目录的jrelibext文件夹中Java程序就可以使用这个JAR文件中的类来创建对象了生成JAR文件将源文件(.java)编译成字节码文件(.class)将字节码文件存放到相应的目录下编写一个清单文件(.mf)使用jar命令(jar.exe)压缩Jar cfm 压缩文件.jar 清单文件.mf 字节码文件jar ctxuvfm0M jar-文件 manifest-文件-C 目录 文件名.,

    注意事项

    本文(Java第4章类与对象.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开