《最新四章类和对象精品课件》由会员分享,可在线阅读,更多相关《最新四章类和对象精品课件(90页珍藏版)》请在金锄头文库上搜索。
1、四章类和对象四章类和对象主要内容学习目标及重、难点1任务学习2课堂实践3总结与要求4任务介绍任务一理解类和对象的概念及其关系,会分析和设计银行帐户对象和储户对象任务二定义平面上任意两个点p1,p2,并计算p1到原点的距离,以及点p1到p2的距离任务三定义和处理员工信息任务分析支撑知识讲解p面向对象基本概念p类的定义、对象的创建p构造方法任务实现任务解决任务解决任务小结Company Logo面向对象v对象对象世界上所有的事物都可以称为对象。包括有形(一台电视机等)和无形(帐户、一项记录等)对象两大要素属性(对象静态特征,可以用某些数据描述)操作(对象动态特征、又称方法,具有的行为或功能)如电视
2、属性有:品牌、尺寸、重量等操作有:收视、选台、音量调节等按照子类与父类的关系,把若干个对象类组成一个层次结构的系统对象彼此之间仅能通过传递消息互相联系。Company LogoCompany Logo课堂思考思考:一只大雁要从北方飞往南方第一步:抽象出对象-大雁第二步:识别该对象的属性-一双翅膀,黑色的羽毛第三步:识别该对象的行为-飞行、觅食等第四步:封装属性和行为来描述大雁这类动物。总结:类是封装对象属性和行为的载体对象是类的一个实例Company Logo面向对象v类类对具有相同基本特征对象的一种抽象,是同一类事物的统称类也是Java中最重要的数据类型,自定义类型由类定义生成的数据称为这个
3、类的实例或对象。类和对象关系类是一个抽象的概念对象是一个具体的类的实例一个类可以生成多个不同的对象,具有不同的属性值Company Logo例子Company Logo面向对象例如:定义一个类圆classCircle/属性Stringcolor;/颜色intlength;/半径/方法voidexpand()方法体/方法:放大voidreduce()方法体/方法:缩小对象具有属性和行为。与之相对应,类在定义时,需要声明类的变量(数据)和方法。Circlec1=newCircle()/生成类Circle的实例c1Company Logo类v属性属性-成员变量成员变量属性称为数据成员,或者成员变量描
4、述类中所定义的数据,对客观世界实体所具有性质的抽象类的每个实例都有自己特有的属性值例如Circle类中所定义的代表半径、颜色等的数据成员,就是Circle类的属性Company Logo类v方法方法在类中实现的操作,它是功能实现的基本单位。方法描述了对象执行操作的具体实现算法一个方法有以下几个部分构成:n方法名n输入参数(可空)n返回值(可空)n执行代码段为了使Circle类的对象可以在屏幕上显示自己,可以定义方法show()intshow(inti,floatj)/返回值方法名输入参数/实现代码Company Logo类v消息消息软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组
5、成:接受消息的对象接收对象要采取的方法方法需要的参数对象对象B对象对象 A消息消息Company Logo任务学习任务介绍任务分析任务实现v完成任务步骤分析完成任务步骤分析了解对问题的描述建立使用实例,分析整个应用实现的场景ATM必须允许用户插入银行卡,选择合适的帐户,然后存钱、取钱、查询余额;一个银行帐户必须记录帐户的ID和当前余额;支票帐户和现金帐户必须支持存钱和取钱。“取钱“是ATM的一个应用实例(存钱、查询余额、验卡、取钱-数目超过余额等也是),步骤有:n选择银行列出的帐户类型n输入取钱的数额(不超过余额)n取出钱n取出卡Company Logo任务学习任务介绍任务分析任务实现v完成任
6、务步骤分析完成任务步骤分析提取候选类和方法(1)要发现对象以及对象的属性:n在以上使用实例中寻找名词,如帐户(2)要发现方法:n在使用实例中寻找动词,如查询(3)确定哪些是对象,哪些是对象的属性:n一般,属性是一些简单值,如余额。n而对象是由一些简单值组合而成,如帐户包括户名,余额,开户时间等。(4)把找到的方法分配对合适的对象,使其成为对象的成员方法。一些属性和对象:n银行、帐户、余额、银行卡等找到的方法包括:n取钱、选择帐户、查询余额、取卡等Company Logo任务学习任务介绍任务分析任务实现v任务解决任务解决确定银行帐户对象和储户对象:BankAccountintaccountid/
7、帐号doublebalance/余额voidcredit(doublemoney)/存入钱到帐户doublegetbalance(intid)/查询帐户中的余额voiddebit(doublemoney)/从帐户中取钱Personintid/身份证号intage/年龄Stringname/姓名voidpressButton()/按钮voidinputCard()/插卡绿色绿色:属性:属性紫色紫色:方法:方法这两个对象之间存在的关系为:一个储户可以有多个银行帐户,一个帐户只能属于一个储户。Company Logo面向对象特性v三个主要特性三个主要特性继承性封装性多态性继承性:指一个新的类继承原有
8、类的基本特征,并可增加新的特性继承具有传递性,Java是单继承封装是一种信息隐蔽技术,封装的目的n隐藏类的实现细节n迫使用户通过接口去访问数据n增强代码的可维护性封装的实现nJava通过访问控制权限来实现封装,访问权限有4种:public,protected,缺省,private多态性是指一个名称对应有多种不同的功能,提供灵活性类的多态性主要通过方法的重载,覆盖和接口来实现Company Logo面向对象v课堂思考课堂思考小王本来体重70kg,经过减肥,体重降到45kg,试从这个问题领域中识别对象、类、属性、状态和状态的变化。1)类:人。2)对象:小王。3)属性:体重。4)状态:70kg。5)
9、状态的变化:小王的减肥行为导致体重下降Company Logo任务学习任务介绍任务分析任务实现v总结总结介绍面向对象基础知识类和对象面向对象分析和设计的方法三个主要特性:继承性封装性多态性Company Logo任务学习任务介绍任务分析任务实现v任务描述任务描述任务二:定义平面上任意两个点p1,p2,并计算p1到原点的距离,以及点p1到p2的距离Company Logo任务学习任务介绍任务分析任务实现v支撑知识介绍支撑知识介绍类的定义属性的定义方法的定义方法定义方法调用方法重载构造方法主方法访问控制修饰符其他修饰符Company Logo类的定义v类类类是封装对象的属性和行为的载体Java中最
10、重要最基本的数据类型,由两种基本成员构成:数据(属性)可以是基本数据类型也可以是某个类的实例方法表示对象具有的行为,与函数类似,只能在类内定义Company Logo1Java类的定义-语法规范类的修饰符n访问控制权限修饰符(public、缺省、private和protected不能)n抽象和最终类修饰符(final,abstract,static不能用)n类修饰符为可选项extendsn继承父类implementsn实现接口n类是组成Java程序的基本要素。它封装了一类对象的属性和方法,是这一类对象的原型。类的修饰符类的修饰符 class 类名称类名称 extends 父类名称父类名称imp
11、lements 接口名称列表接口名称列表 成员变量定义及初始化;成员变量定义及初始化; 构造函数定义构造函数定义; 方法定义及方法体;方法定义及方法体;类体,其类体,其中定义了该类中所有的变量和中定义了该类中所有的变量和该类所支持的方法,称为成员变量和成该类所支持的方法,称为成员变量和成员方法。员方法。类体27ccit1Java类的定义v类名类名必须符合Java标识符的命名规则以字母、字符”_”或”$”开头不能使用与Java关键字相同的类名类名通常以大写字母开头,如果类名由多个单词组成,则每一个单词的开头字母要大写类名应尽量有意义,便于程序阅读者的理解和程序的维护,养成良好的编程习惯。2、类的
12、修饰符v访问控制修饰符访问控制修饰符public公开类:类成员可以被本包和不同包得任何类、对象所用;反之非公开类通常为同一个包中其它非公开类或公开类服务。缺省只能被同一个包中的其他类、对象引用或继承。protected不能用private不能用v抽象类修饰符抽象类修饰符abstract后面学v最终类修饰符最终类修饰符final后面学注意:abstract和final是矛盾的,不能同时选择,要么都不用,要么只能选一个。3、成员变量定义-语法规范变量修饰字变量修饰字 变量数据类型变量数据类型 变量名变量名1,变量名变量名2=变量初值变量初值;public | protected |缺省缺省| pr
13、ivate static final transient volatilen成员变量的类型可以是基本类型也可以是引用类型(类,接口,数组)n在一个类中的成员变量唯一n变量必须先定义,后使用n可以设置初值,如果没有设置,则会有默认值整型 (byte、int、short、long)0字符型 (char)u0000布尔型 (boolean)false实型 (float double)0.0引用类型 (数组、类、接口)null3、成员变量定义例如例如:publicclassDate1/类声明intyear,month,day;/成员变量声明v或者:或者:byteb;doubled1=0.23,d2=5
14、6.7;booleanmycom=true;charmc=b;Strings“abc”;成员变量定义-修饰符v访问控制修饰符有4种public、protected、缺省、private,用来规定变量的访问权限vstatic指明该变量是一个类变量(静态变量);若无,则为实例变量(属于对象)vfinal指该变量是一个常量,不可改变4、访问修饰符的控制范围访问修饰符本类同一包中的类不同类不同包中的不同类publicprivateprotected缺省:可访问33ccitclassApublicintx;/任何类的对象都能对它读写完全暴露给使用者,除非特殊,一般不定义pretectedinty;/同一
15、个包中任何类或不同包中该类子类对象能进行读写privateintz;/只有本类自身成员才能访问intw;/同一个包中任何类对象可以进行读写voidsetX(inta)z=a;/可以,在A类内部publicclassTestApublicstaticvoidmain(Stringargs)Apt=newA();/通过new运算符生成一个A类对象pt.x=10;/因为是public,可对A类的对象中x成员进行读写pt.y=20;/如果在同一个包,是可以的。否则不可以pt.z=30;/不行,只有在A类内部才可以访问,外部无权假设两个类定义在同一个包中Class Point static int x;
16、/静态(类)变量静态(类)变量 int y; /实例变量实例变量Public class TeatPoint public static void main(String args) Point.x=10;/可以。可以。X一直存在,随时可用,与有无对象无关一直存在,随时可用,与有无对象无关 Point.y=10;/不可以,是实例变量,必须先创建对象后才能使用不可以,是实例变量,必须先创建对象后才能使用 Point p1=new Point(),p2=new Point(),p3=new Point(); p1.y=10; /可以。可以。P1对象内部含有自己的变量对象内部含有自己的变量 p2.y
17、=20; /可以。可以。P1对象内部含有自己的变量对象内部含有自己的变量 p3.y=30; /可以。可以。P1对象内部含有自己的变量对象内部含有自己的变量 p1.x=20;/可以,所有对象共享一个类成员变量可以,所有对象共享一个类成员变量x,它一直存在,随时可,它一直存在,随时可用用 示例:控制范围-1同一个类内可以访问任何访问权限的变量。packagetest;publicclassDemo2voidtest()Demo1dm1=newDemo1();dm1.priInt=1; /错误dm1.proInt=1;dm1.defInt=1;dm1.pubInt=1;在同一个包下,但Demo2对D
18、emo1中的private成员没有访问权限。packagetest;publicclassDemo1privateintpriInt;protectedintproInt;intdefInt;publicintpubInt;voidtest()priInt=1;proInt=1;defInt=1;pubInt=1;packagetest.t1;importtest.Demo1;publicclassDemo4voidtest()Demo1dm1=newDemo1();dm1.priInt=1; /错误dm1.proInt=1;/错误dm1.defInt=1;/错误dm1.pubInt=1;不同
19、包下,只能访问Demo1中的public成员。5、方法定义-语法规范方法修饰字方法修饰字 返回类型返回类型 方法名称方法名称(参数参数1,参数参数2,) throws exceptionList (statements;) /方法体:方法的内容方法体:方法的内容public | protected|缺省 | private static final | abstract native synchronizedn 返回类型可以是任意的Java数据类型当一个方法不需要返回值时,返回类型为void。n 参数的类型可以是简单数据类型也可以是引用数据类型(数组、类或接口)参数传递方式是值传递。n 方法体
20、对方法的实现包括局部变量的声明以及所有合法的Java指令。局部变量的作用域只在该方法内部。举例:方法定义v举例:举例:finalvoidmove(intdx,intdy)throwsIOExceptionx+=dx;y+=dy;v举例:举例:class Test int a,b; void change(Test obj) obj.a=50; obj.b=40; /可以在函数中改变可以在函数中改变对象状态对象状态 void setTest(int x,int y)void setTest(int x,int y) a=x; a=x; b=y; b=y; 6、方法定义-修饰符v方法命名符合标识符
21、规则Java中允许同名方法存在,但方法的参数列表应不同(方法的重载)v访问控制权限public、pretected、缺省、private含义同成员变量v其他修饰符static类方法(静态方法),可直接用类名来调用,随时可用。abstract抽象方法,只有声明部分,方法体由子类来实现final最终方法,不能被子类重构native本地方法,由本地其他语言代码实现synchronized同步,将在“多线程”中介绍vstatic用于修饰类的数据成员和方法,表示该成员为静态成员基本形式:static数据类型变量名;static返回类型方法名(参数列表)/方法体修饰符staticclassAstatici
22、ntb=0;/静态成员变量staticvoidget()/静态方法nstatic修饰的类成员或静态成员在定义时就静态分配了内存空间,在生成类对象之前就可以使用静态成员静态成员是属于整个类的,一个类的多个对象可以共享共享该静态成员n无static修饰的实例成员属于某个对象或实例,必须要定义对象才能使用修饰符staticv对静态成员的访问方法对静态成员的访问方法先生成该类的实例(对象),然后再通过点运算符访问Aa=newA();a.b=5;a.get()是不生成实例,直接在类名后加上点运算符和静态成员名A.b=5;A.get()static方法内部随时可以访问static成员变量和方法,要访问非s
23、tatic成员变量或方法,必须先创建一个对象。非static方法随时访问静态方法不能被重载和重写Company Logo修饰符staticv对静态成员的访问方法对静态成员的访问方法static方法内部可以访问static成员变量和方法不能访问非static成员变量或方法,必须先创建一个对非static方法可以访问static成员变量和方法可以访问非static成员变量和方法classPointstaticintx;inty;publicstaticvoidmain(Stringargs)x=10;/可以,类变量随时可以使用y=20;/不可以。必须先创建一个类对象Pointpt=newPoint
24、();pt.y=20;/可以通过对象pt来访问pt对象中的变量yCompany Logo修饰符-finalvfinal关键字关键字最终的,不能修改可以修饰类,成员变量和方法。最终类,不能再有子类;最终方法,不能再被重写;最终属性,初始化后,不能再被赋值。常量finalclassAfinaldoublePI=3.1416;finaldoublearea(doubler)return(PI*r*r);classFinalTeststaticpublicvoidmain(Stringarg)Aa=newA();System.out.println(area=+a.area(5.0);a.PI=100
25、或重写方法area()都是错误的Company Logo修饰符abstractv抽象方法用abstract修饰的方法,抽象方法只有方法的返回值、名称和参数列表,没有函数体。v抽象类用abstract修饰的类抽象类是一种没有完全实现的类。不能用它产生具体的实例Company Logo7、方法v类成员方法方法定义方法调用方法重载构造方法主方法Company Logo方法定义v返回值类型返回值类型可以是基本数据类型、数组或类如果方法不返回任何值,必须声明为void(空)v参数列表参数列表由零个或多个参数构成,参数之间用逗号分隔,每个参数由一个数据类型和一个标识符构成v方法体方法体定义了该方法具体是如
26、何实现的,是整个方法的核心和重点v局部变量局部变量 方法体中定义的变量参数列表方法修饰符返回值类型方法名(参数列表)方法体Company Logo方法调用v调用方法实参在调用时会代替方法定义中的形参。要求实参的类型、个数和顺序必须与定义中的形参表一致。方法调用的形式有两种一种是把方法调用作为一个表达式语句另一种是作为一个表达式Company Logo方法重载v方法重载一个类中多个方法具有相同的方法名,但参数的类型或参数的数量不同静态多态:编译系统调用方法时,系统自动根据实际参数的数量和类型匹配publicclassMethodOverloadpublicstaticvoidmain(Strin
27、gargs)MethodOverloadobj=newMethodOverload();System.out.println(obj.square(3)+”+obj.square(1.5);intsquare(intx)returnx*x;doublesquare(doubley)returny*y;Company Logo构造方法v类的特殊的方法,用来初始化对象类的特殊的方法,用来初始化对象要求构造函数的方法名与类名一致构造函数没有返回类型,不能有void只能通过new关键字在创建对象的时候调用注意在创建一个类的新对象时,系统会自动调用该类的构造函数为新对象初始化每一个类至少都有一个构造方法
28、当某个类的没有声明构造方法时,系统会为其自动生成一个默认构造方法(无参数、无方法体)。构造方法使用其参数初始化新对象的状态。构造函数可以重载(参数序列不同)。当创建对象时,首先用new分配该对象的内存空间,然后调用某一个构造方法,对该对象内存空间初始化。Main方法v主方法主方法是Java应用程序执行的起点与其它方法相似,它必须在类的内部定义注意:一个Java源文件可以包含一个或多个类但在Java的Application中必须有而且只能有一个类包含main方法且该程序文件的名称必须与包含main方法的类的类名一致。main方法必须是公有的(public),静态的(static),没有返回值,有
29、一个字符串数组参数,用于进行参数的传递。Company Logo任务学习任务介绍任务分析任务实现v完成任务步骤分析完成任务步骤分析一是如何通过类定义描述一个具体的点一个类Point表示抽象的点,定义两个成员变量x,y表示点对应的具体位置二是如何计算点到原点的距离Math中已经实现了求平方根的方法sqrt()三是如何计算点与点之间的距离同上编写主类,测试调用Company Logo任务学习任务介绍任务分析任务实现v任务解决任务解决编写程序递交Company Logo任务学习任务介绍任务分析任务实现v总结总结类的定义主要包括成员变量和成员方法的定义一般语句不能单独放在类中,必须放到方法中成员变量的
30、作用范围为整个类成员方法(方法的返回值,方法的局部变量,可以重载)主方法访问控制修饰符public、protected、缺省、private修饰类修饰成员变量或成员方法其他修饰符staticfinalabstractCompany Logo任务学习任务介绍任务分析任务实现v任务描述任务描述任务三:定义和处理员工信息Company Logo任务学习任务介绍任务分析任务实现v支撑知识介绍支撑知识介绍成员变量和局部变量作用范围变量隐藏this关键字对象对象创建访问对象对象消除包packageImport再淡static成员变量和成员方法Company Logo成员变量和局部变量v成员变量成员变量在类
31、体中定义在整个类中都有效v局部变量局部变量在方法中定义方法体中声明方法中的形参只在本方法中有效class Data int x=12,y=5; /成员变量 public void sum() int s; /局部变量 s=x+y; class Data int x=12,y=5; public void sum() int x=3; /局部变量x屏蔽了成员变量 int s; s=x+y; 名字隐藏:局部变量名与成员变量名相同,则成员变量被屏蔽Company Logo名字隐藏和this关键字v名字隐藏名字隐藏局部变量与类的成员变量同名,则局部变量会隐藏成员变量,称为名字隐藏。若要访问被隐藏的成员
32、变量,则必须使用this来访问。this用于代表当前正在使用或访问的对象每一个对象内部都有一个this变量,用于指明自身地址PublicclassPointprivateintx;privateinty;publicPoint()x=0;y=0;publicPoint(intx)/intx为局部变量与成员变量x同名,成员x隐藏this.x=x;y=0;/局部变量x的值赋给成员变量xpublicPoint(intx,inty)this.x=x;this.y=y;publicintgetX()returnx;publicintgetY()returny;publicvoidsetX(intx)th
33、is.x=x;publicvoidsetY(inty)this.y=y;publicvoidsetPoint(intx,inty)this.x=x;this.y=y;publicvoidsetPoint(Pointpt)x=pt.x;y=pt.y;this关键字vthis表示对当前对象的引用表示使用类的成员变量,而非局部变量,尤其是()在成员变量(名字隐藏)与局部变量同名时用于构造方法中引用满足指定参数类型的构造方法只能用一个,且必须放在方法体的第一个语句public class Employee private String name; private int salary; public
34、Employee() this(“Unknown”); public Employee(String n, int s) name = n; salary = s; public Employee(String n) this(n,0); /引用本类的构造方法,只能放在第一 Company Logo对象v对象对象是类的实例;创建类的目的是以类为模板创建对象。对象的声明周期创建对象使用对象删除对象一个类可以一个类可以有多个实例有多个实例对象的创建对象的使用对象的清除对象的创建v对象的创建对象的创建 需要两个步骤需要两个步骤对象创建之前要先进行声明,但没有分配空间,为null,不能使用Cardem
35、oCar;然后通过new操作符创建一个对象实例,真正引用一个对象:demoCar=newCar();也可以两步合一:CardemoCarnewCar();v对象的构造过程对象的构造过程为对象开辟空间,并对对象的成员变量进行缺省的初始化;对成员变量进行指定的初始化;调用构造方法。new先为该对象从堆中申请内存空间,自动调用构造行数对该对象内存进行初始化,最后返回对象的引用,若内存不够,返回null。对象的使用v对象的使用对象的使用访问对象的成员变量和方法对象做类的成员方法中使用对象对象数组对象的使用访问对象的成员变量和方法v访问对象的成员变量和方法访问对象的成员变量和方法通过运算符“.”进行访问
36、对象的成员变量和方法例如:MyDatedate=newMyData();intday;day=date.day;/引用date的成员变量daydate.tomorrow();/调用date的方法tomorrow()引用对象类型v复合(引用)类型类数组接口v引用类型指向一个对象在内存中的位置,本质上它是一种带有很强的完整性和安全性限制的指针v引用型变量只支持有限的逻辑判断:相等判断(是否同一个对象的引用):=和!=类型判断(是否为一个类的实例):instanceof示例:使用对象1classPointpublicintx=0,y=0;publicPoint(intx,inty)this.x=x;
37、this.y=y;publicintgetX()returnx;publicintgetY()returny;publicvoidsetXY(intx,inty)this.x=x;this.y=y;classTestppublicstaticvoidmain(Stringargs)Pointpa=newPoint(23,94);pa.x=44;/如x声明为private则无法使用此句,改为setXY(44,2);System.out.println(pa=(+pa.getX()+,+pa.getY()+);示例:使用对象2/Date1()是构造方法,main()方法是类Date1中的方法pub
38、licclassDate1intyear,month,day;Date1(inty,intm,intd)year=y;month=m;day=d;voidprint()System.out.println(year+month+day);publicstaticvoidmain(Stringargs)Date1a=newDate1(2004,9,20);a.year=2005;a.print();示例:使用对象3/main()方法是类UseDate2中的方法,main()使用类另一个类Date2的对象classDate2intyear,month,day;voidsetDate(inty,in
39、tm,intd)year=y;month=m;day=d;voidprint()System.out.println(year+month+day);publicclassUseDate2publicstaticvoidmain(Stringargs)Date2b=newDate2();b.setDate(2004,9,1);b.print();对象的使用对象作为类的成员v类的成员变量可以是对象v注意:在使用前必须为该对象分配空间classDateintyear,month,day;Date(inty,intm,intd)year=y;month=m;day=d;voidshowDate()S
40、ystem.out.println(year+”,”+month+”,”+day);publicclassStudentStringno,name;Datebirth;voidsetStu(Strings1,Strings2,inty,intm,intd)no=s1;name=s2;birth=newDare(y,m,d);/为成员变量对象分配空间对象的使用方法中使用对象v对象作为方法的参数和返回值v注意:是引用传递。/passObject.java类对象作为方法参数,并且在方法中改变对象classAintx=5;voidchange(Aa)System.out.println(a.x=+a.
41、x);a.x=331;System.out.println(a.x=+a.x);classpassObjectpublicstaticvoidmain(Stringargs)Aaa=newA();aa.change(aa);System.out.println(aa.x=+aa.x);对象的使用对象数组v数组中的每个元素是对象。publicclassObjectArraypublicstaticvoidmain()Dated=newDate(2);d0=newDate(1999,12,31);d1=newDate(2000,1,1);d0.showDate();对象的清除v定义对象时,必须用n
42、ew分配空间,但使用后的释放是系统自动完成的。Java运行时系统通过垃圾收集(GarbageCollection)周期性地监测释放无用对象所使用的内存,完成对象的清除。除了自动垃圾收集外,通过调用方法System.gc()要求进行垃圾收集时。当一个对象的内存空间被回收时,系统自动调用该对象的方法finalize(),进行删除工作。包v包包是类和接口的集合,提供一种高层访问保护和名空间管理包得作用:避免同名冲突包名本身又对应一个目录(用一个目录表示)。包名可以有层次,以小数点分割。包名一般全小写Company Logo包(package)v package packagepk1.pk2.pk3.
43、;如packagefirst.second.third,则系统对应在磁盘上建立目录:根路径firstsecondthird包名建议packagecn.js.ccit.www;/命名要注意唯一性,可使用WWW域名的倒写publicclassComplexNumber如果package未指定,则所有的class都被组合到一个未命名的缺省defaultpackage包中,不能被其他包中的类引用package说明必须是非注释非空行的第一行package语句后对应的是包的层次结构,包名之间是通过点号来分隔的包(package)v使用包使用包使用import语句importpk1.pk2.pk3(类名或*
44、)注意:import语句要放在程序的最前面。使用前缀包名在每个要引入的类前,给出该类所在的包名。importjava.applet.Applet;/引入包java.applet中的类Appleimportjava.io.*;/引入包java.applet中的类Applejava.applet.Appleta=newjava.applet.Applet()importjava.applet.Applet;Appleta=newApplet();使用其他包中的类vimport语句将指定包中的类引入当前的程序中,即告诉编译到哪去找程序中使用的类。vimport语句必须出现在所有类定义之前。例:imp
45、ortjava.util.*;该语句引入整个utility类库(标准Java库的一部分)例:importjava.util.Vector;该语句只引入Vector类,但utility类库中的其他类不可用。主要包介绍再谈staticvstatic类(静态)成员变量类(静态)方法v例子v不正确的使用Company Logo类方法和类变量staticv类方法(静态方法)或类变量(静态变量)static用在变量或方法之前,表明它们是属于类的v实例的方法和变量若无static修饰,则变量和方法分别是某个实例对象的class ABCD char data; static int share_data;cl
46、ass Demo ABCD a,b,c,d;object achar dataobject cchar dataObject bchar datastatic intshare_dataobject dchar data类方法和类变量staticvstatic类变量生存期不依赖于对象,无需创建实例对象,可以直接通过类名访问。也可以通过该类的实例对象访问任何一个类的实例访问或操作这个成员,都是对这同一个内存单元的访问和操作类方法可以直接通过类名访问只能访问该类的类变量和类方法,不能直接访问实例的变量和方法(无static)v若无static修饰,则变量和方法分别是实例的方法和变量实例(非stat
47、ic)方法可以访问该类的类变量和类方法遵循对象的生命周期,随着对象的创建而创建,随着对象的消亡而消亡static示例:使用静态变量publicclassStaticExstaticintgCount=0;publicstaticvoidmain(Stringargs)StaticExe1=newStaticEx();StaticExe2=newStaticEx();e1.gCount+;e2.gCount+;System.out.println(gCountofe1=+e1.gCount);System.out.println(gCountofe2=+e2.gCount);System.out
48、.println(gCount=+StaticEx.gCount);static示例:实例计数器classCountprivateintserial;privatestaticintcounter=0;staticintx=100;Count()counter+;/实例计数器serial=counter; intgetSerial()returnserial;publicclassStaticTestpublicstaticvoidmain(Stringargs)Countc1=newCount();Countc2=newCount();System.out.println(c1.getSer
49、ial();System.out.println(c2.getSerial();System.out.println(+Count.x);static示例:使用静态方法publicclassStaticFunstaticintx=3;publicstaticvoidmain(Stringargs)inty=5;System.out.println(y=+addX(y);staticintaddX(intyy)/若无static,则main无法使用returnx+yy;static不正确的引用class StaticError String mystring=“hello”; public st
50、atic void main(String args) System.out.println(mystring); 编译时错误信息: nonstatic variable mystring cannot be referenced from a static context “System.out.println(mystring);”。static解决办法解决方法1 :将变量改成类变量class StaticError static String mystring=“hello”; public static void main(String args) System.out.println
51、(mystring); 解决方法2:先创建一个类的实例class NoStaticError String mystring=“hello”; public static void main(String args) NoStaticError noError; noError = new NoStaticError(); System.out.println(noError.mystring); 任务学习任务介绍任务分析任务实现v完成任务步骤分析完成任务步骤分析v定义Employeep成员变量name、salary和id值p成员方法构造方法、get和set、输出和显示v定义测试类定义测试类p
52、在主方法中创建对象p并调用对象的方法p在主方法中创建对象数组Company Logo任务学习任务介绍任务分析任务实现v任务解决任务解决编写程序递交Company Logo任务学习任务介绍任务分析任务实现v总结总结类的基本组成和声明方法对象创建的过程和方法。构造函数的定义和执行过程。访问控制修饰符public,private,protected。关键字static,abstract,final的用法和特点。方法的重载包Company Logo课堂实训v课堂实践课堂实践4 -见文档见文档类和对象解决简单问题课堂测试:定义了一个学生类Student,利用该类建立了2个对象,并输出学生信息,显示学生总数。Company Logo要求v类和对象类和对象类和对象比较重要多练习作业4-见文档结束语结束语谢谢大家聆听!谢谢大家聆听!90