版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章类与对象10/8/20231第3章类与对象10/8/202313.1Java语言的类3.1.1系统定义的类1、java.*包(核心包):Applet,AWT,Beans,IO,Lang,Math,Net,SQL,Util等.2、Javax.*包:Swing,Securing,Rmi等3、org.*组织扩展包:CORBA和XML
用import来引入这些包.10/8/202323.1Java语言的类3.1.1系统定义的类1、jav3.1.2用户自定义类1、类、对象与对象引用(1)类(class)
类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素,它封装了一类对象的状态和方法,是这一类对象的原型。创建一个新的类,就是创建一个新的数据类型。实例化一个类,就得到该类的一个对象。类(class)是可以由用户自己定义的引用类型,它是相似对象的软件抽象、创建对象的模板。每一个类都组合了一些能够反映某种类型属性的字段和反映某种类型动作的方法。10/8/202333.1.2用户自定义类1、类、对象与对象引用(1)
(2)对象(Object)对象是一个人、地址、物品、事件、概念、屏幕显示或者报表,它属于某一个类,对象拥有自己的属性值和方法调用。每一个类都将存在许多相互独立的对象。通常说一个对象是类的一个实例,一个对象的生命周期包括声明、创建、使用和清除4个状态。在Java语言中只能引用对象,无法声明一个直接包含对象的变量。类的变量实际上只是拥有对象的地址,而不是拥有对象本身。所有对象总是且只是通过内存引用访问的,这种方式称为间接寻址(Indirectaddressing)。绝对不可以直接涉及对象,而只能通过一个保留地址的变量访问对象。通常情况下,类类型变量称为引用变量,它们并不直接保留对象,只是保留对象的地址,通过引用变量即可以得到一个对象。10/8/20234(2)对象(Object)在JaclassConstructor{ publicConstructor() { System.out.println("调用构造方法"); }}publicclassInitConstructor{ publicstaticvoidmain(Stringst[]) { newConstructor(); }}10/8/20235classConstructor10/8/202352、类的定义修饰符class类名称//开始定义类{程序区段;//定义类的属性与方法}//完成类定义[public][abstract|final]classclassName[extendssuperclassName][implementsinterfaceNameList]{…//propertyandthemethoddeclarations}//endofclass10/8/202362、类的定义修饰符class类名称//开始定义类访问控制权public、缺省
一个Java源文件中最多只能有一个public类,而且文件名必须和public类的类名相同,拥有main()方法的类中;其它为辅助类。
(2)修饰符①abstract当一个类前加上了abstract,表示该类是抽象类,所谓抽象类的意思是该类必须被继承,本身不实现任何实际操作,该类中至少有一个抽象方法;当一个类中,如果出现了某一个abstract的方法,那么这个类的前面也必须加上abstract的修饰符。10/8/20237访问控制权public、缺省一个Jav②finalfinal如果一个类上加了final这个修饰符,那么这个类就不能被任何其他的类所继承,也就是说,这个类绝后了。当不希望某个类被其他类继承时,就可以将该类标识为final。Java没有限制public,abstract和final的次序。可以写成publicabstract,publicfinal,abstractpublic或者finalpublic(对编译器而言都是一样的)。
abstract不能与final共同修饰同一类10/8/20238②finalfinal如果一个类上加了f2、属性(property或attribute)
属性就是类的成员变量(membervariable)或成员数据(memberdata)(字段或域(field))。当定义一个属性时,必须在类内定义,并告诉Java这个属性的数据类型是什么?以及存取控制的等级是什么?完成定义后,当程序执行时,计算机才知道要分配多少内存来存储这个属性,以及哪些对象可以存取此属性。其语法如下:修饰符数据类型属性名称;
[public|protected|private][static][final][transient][volatile]
type
variableName;10/8/202392、属性(property或attribute)10/8/存取等级
同一类
同一package不同package其它类
子类
其它类子类public可
可
可
可
可
private可
不可
不可不可不可protected可
可
可
不可可
default可
可
可
不可不可(1)访问控制符10/8/202310同一package不同package其它类子类其它类设计类成员访问控制的最常用策略是将所有数据成员声明为私有的,以实现信息隐藏;将所有方法成员声明为公有的,以供其他程序片段使用。这种设计模式的好处是,当一个类的属性表示方法发生变化时,只需修改类中一些方法成员的方法体代码,只要该类能保持所有方法成员的接口及其实现的功能不变,那么上述变化就不会影响到使用该类的其他程序。10/8/202311设计类成员访问控制的最常用策略是将所10/8
如果设计的类中有一个数据成员需要对外公开,就要仔细研究其他程序片段是仅仅需要读取该数据成员的值,还是需要修改该数据成员的值。若是前者则仍应将数据成员声明为私有的,然后提供一个返回该数据的公有方法成员;若是后者则有两种处理方式:一是将数据成员声明为公有,二是将数据成员声明为私有并提供一个公有的访问方法和一个公有的修改方法。返回私有数据成员的那些公有方法成员又称getter方法,因为这些公有方法通常命名为get…()(注意对布尔类型返回值通常命名为is…());修改私有数据成员的那些公有方法成员又称setter方法,因为这些方法通常命名为set…()。10/8/202312如果设计的类中有一个数据成员需要对classPerson//类名{ privateStringaddress;//籍贯 privateStringname;//姓名 privateintage;//年龄 publicStringgetName()//获取人名 {returnname;} publicintgetAge()//获取年龄 {returnage; } publicvoidchangeName(Stringnew_name)//改名 {name=new_name; } publicvoidincrementAge()//增加1岁 {age++; } publicvoidsetAge(intnew_age)//设置年龄 {age=new_age;}10/8/202313classPerson//类名10/8/202313
publicStringgetAddress()//获取籍贯 {returnaddress;} publicvoidsetAddress(Stringx)//设置籍贯 { address=x; } publicStringtoString()//读对象信息 { Strings="Name:"+name+"\n"; s+="Age:"+age+"\n"; s+="Address:"+address+"\n"; returns; }}10/8/202314publicStringgetAclassBase{ publicintattPublic=50; privateintattPrivate=50;} publicclassAccessControl1{ publicstaticvoidmain(Stringargs[]) { BaseA_Base=newBase(); System.out.println(“在不同类中存取public属性");System.out.println("attPublic:"+A_Base.attPublic);
//输出A_Base对象的attPublic属性 //System.out.println("attPrivate:“+A_Base.attPrivate); }}10/8/202315classBase10/8/202315执行结果:
在不同类中存取public属性attPublic:50
注意:访问描述符关键字不能作为方法的局部变量和参数变量声明的一部分10/8/202316执行结果:10/8/202316(2)修饰符
成员变量的声明可以带下面的修饰符(modifier)关键字:final或volatile,static,transient。
①final:将一个成员变量声明为final时,编译器保证对这个成员变量进行初始化,并且在以后将它看做一个常量。编译器可以在程序的字节码上执行内部优化,因为它“知道”常量不会发生改变(默认情况下,一个成员变量是可读/写的)。
②volatile用于声明一个共享变量,一般用在多个并发线程共享变量时,这样各个线程对变量的访问就可以保持一致。10/8/202317(2)修饰符①final:将一个成
③static:当一个成员变量被声明为static时,声明这个成员变量的类所创建的所有对象共享这个成员变量的一个副本。给这个成员变量赋新值会让所有对象“看到”这个新值(默认情况下,每个对象有自己的一个成员变量副本)。
④transient用来声明一个暂时性变量,指示Java虚拟机该变量不属于对象的永久状态,对象存档时不必保存该变量,而缺省情况下,类中所有变量都是对象永久状态的一部分,当对象被存档时,这些变量必须同时保存。注意:修饰符关键字不能作为方法的参数变量声明的一部分,而且除了final以外,修饰符也不能作为方法的局部变量声明的一部分。10/8/202318③static:当一个成员变量被声明publicclassAccount//银行账户{//银行账户的属性privatedoublebalance=0;//存款余额
//向账户中存款,存款金额为amountpublicvoiddeposit(doubleamount){balance=balance+amount;}
//从账户中取款,取款金额为amount;取款成功返回true,否则返回falsepublicbooleanwithdraw(doubleamount){if(amount<=balance){balance=balance-amount;returntrue;}elsereturnfalse;}
//查询账户的当前余额publicdoublegetBalance(){returnbalance;}}10/8/202319publicclassAccount//银行账户103.2对象的创建与引用3.2.1对象的创建与访问对象成员
创建对象包括三步:
对象的声明对象的实例化对象的初始化10/8/2023203.2对象的创建与引用3.2.1对象的创建与访问对象成员publicclassTestPerson{publicstaticvoidmain(Stringargs[]){Personp1=newPerson();Personp2=newPerson(); p1.changeName("John"); p1.setAge(23); p1.setAddress("江西"); p1.incrementAge(); p2.changeName("MaryAnn"); p2.setAge(22); p2.setAddress("北京"); System.out.println("姓名="+p1.getName()+",地址="+p1.getAddress());System.out.println("姓名="+p2.getName()+",地址="+p2.getAddress());
//System.out.println(p1); //System.out.println(p2);}}10/8/202321publicclassTestPerson10/8/20publicStringtoString()toString()方法返回当前对象的字符串表示形式,返回的字符串中包括当前对象对应的类名、一个@符号和一个该对象的hash码的无符号十六进制描述(Java赋予当前对象的标识码)。希望用户开发类都重载toString()方法使其返回能反映当前对象特点的字符串.10/8/202322publicStringtoString()10/8/3.2.2对象的初始化和构造方法1、默认值:
定义属性时没有指定初始值,则系统自动指定初值。2、定义属性成员时指定初值。3、用代码块设置初始化值4、使用构造方法给对象初始化10/8/2023233.2.2对象的初始化和构造方法1、默认值:10/8/201、定义属性时没有指定初始值使用默认值classCourse//Course是课程类名{ //定义成员变量 privateintcNumber;//课程编号 privateStringcName;//课程名 privateintcUnit;//学分数
//定义成员方法 voidsetCNumber(intNumber)//成员方法setCNumber { cNumber=Number;} intgetCNumber()//成员方法getCNumber { returncNumber; } voidsetCName(StringName)//成员方法setCName { cName=Name; } StringgetCName() //成员方法getCName { returncName; }10/8/2023241、定义属性时没有指定初始值使用默认值10/8/2023voidsetCUnit(intUnit)//成员方法setCUnit { cUnit=Unit; }intgetCUnit() //成员方法getCUnit {returncUnit;}}publicclassInitialDemo1{publicstaticvoidmain(String[]args){ Coursecs1=newCourse();//声明一个Course对象cs1 System.out.println(cs1.getCNumber()); System.out.println(cs1.getCName()); System.out.println(cs1.getCUnit());}}10/8/202325voidsetCUnit(int2、定义属性成员时初始化classCourse//Course是课程类名{ intcNumber=1;//课程编号 StringcName="Wang";//课程名 intcUnit=2;//学分数 } publicclassInitialDemo2{ publicstaticvoidmain(String[]args) { Coursecs1=newCourse();//声明一个Course对象cs1 System.out.println(cs1.cNumber); System.out.println(cs1.cName); System.out.println(cs1.cUnit); }}10/8/2023262、定义属性成员时初始化10/8/2023263、通过初始化块来设置对象的初始值publicclassClassExample{//声明成员属性,可以是静态的或非静态的inti;staticintj;
//静态初始化语句块static{ j=10; System.out.println("Instaticinitializer."); System.out.println("j="+j);}
//实例初始化语句块{ i=10; System.out.println("Ininstanceinitializer.");System.out.println("i="+i);}10/8/2023273、通过初始化块来设置对象的初始值10/8/202327//构造方法publicClassExample(){System.out.println("Inconstructor.");}publicstaticvoidmain(String[]args){ newClassExample();}}10/8/20232810/8/2023284、使用构造方法初始化构造方法:(1)构造方法名与类名相同。(2)构造方法的作用是给对象赋初值,没有返回值,但不需要用void来指明这一点。(3)构造方法不能被程序显式调用,即不应该向其它方法一样来使用构造方法。(4)构造方法可以在类中由编程者定义,若编程者没有定义,系统将自动生成一个构造方法(默认构造方法),来完成对象创建时的初始化工作。(5)构造方法可以通过重载实现不同的初始化方法。(6)构造方法可以用public修饰或缺省(7)编程者一旦定义了构造方法,就不能再调用默认构造方法。10/8/2023294、使用构造方法初始化10/8/202329classCourse//Course是课程类名{ //定义成员变量 intcNumber=1;//课程编号 StringcName;//课程名 intcUnit=2;//学分数 Course(StringName,intUnit)//构造方法 { cName=Name; cUnit=Unit; } }10/8/202330classCourse//Course是课程类名10publicclassInitialDemo3{ publicstaticvoidmain(String[]args) {//使用类中声明的构造方法声明一个Course对象cs1Coursecs1=newCourse(“Zhang”,6);System.out.println(cs1.cNumber); System.out.println(cs1.cName); System.out.println(cs1.cUnit); }}10/8/202331publicclassInitialDemo310/8/复制构造方法复制构造方法就是将传入的对象的状态值取出并设置新创建的对象,使之成为新对象的状态,如此一来,可使两个对象有相同的状态,可是却是指向不同的对象。10/8/202332复制构造方法复制构造方法就是将传入的对象的状态值classCircle{ doubleradius; Circle(Circleacircle) {radius=acircle.radius; } Circle(doublerad) { radius=rad; } voidsetRadius(doubleradi) { radius=radi; } voidshowRadius() { System.out.println("半径为:"+radius); return; } doubleshowArea() { returnMath.PI*Math.pow(radius,2);}}10/8/202333classCircle10/8/202333publicclassCircleConstructor{publicstaticvoidmain(String[]args){ Circleacirc; acirc=newCircle(12.0); Circlebcirc=newCircle(acirc); bcirc.showRadius(); acirc.setRadius(14.0); bcirc.showRadius(); System.out.println(“acirc的面积等于"+acirc.showArea());System.out.println(“acirc的面积等于"+bcirc.showArea());}}10/8/202334publicclassCircleConstructor例3-210/8/202335例3-210/8/2023353.3变量作用域
变量的作用域也称变量的有效范围,它是程序的一个区域,变量在其作用域内可以通过名字来引用。变量分为4类情形:
成员变量局部变量方法参数异常处理参数10/8/2023363.3变量作用域变量的作用域也称变量的有效范publicclassScope{intx;//成员变量inty;//成员变量的初始化代码{ x=2; y=1;}publicvoidmethod(inta)//方法参变量在整个方法内有效{ intx=5;//局部变量将成员变量隐藏 for(inti=1;i<a;i++)//在循环内定义的变量i只在循环内有效 { x=x+i; } System.out.println("x="+x+",y="+y+",a="+a);}publicstaticvoidmain(String[]args){ Scopex=newScope(); x.method(6);}}10/8/202337publicclassScope10/8/2023373.4类变量和静态方法3.4.1变量(实例变量和类变量)1、实例成员变量在类体中声明但不使用关键字static修饰符,则这个成员变量称为实例成员变量(instancevariable),也称为非静态成员变量。①它在对象初始化时完成相应的初始化工作②每个对象都拥有自己的实例变量③实例变量的作用域是某一个类具体创建的实例对象
10/8/2023383.4类变量和静态方法3.4.1变量(实例变量和类变实例成员变量与对象相关,而不与类相关联。在修改一个实例成员变量的时候,只有与这个成员变量相关的对象才能看到所发生的变化。实例成员变量在创建对象时被创建,在删除对象时被删除。classInstanceFieldDemo{doubled=1234.5;}当JVM创建一个InstanceFieldDemo对象时,它为d分配内存,并且将1234.5赋给这个成员变量。10/8/202339实例成员变量与对象相关,而不与类相关联。在修改一个实例
但如果不对一个实例成员变量进行显式的赋值,JVM就会将这个域的内存清为零,这个动作为实例成员变量设了一个默认值。默认值的解释方法取决于实例成员变量的类型,例如:一个对象类型实例成员变量的默认值为null;一个数字类型实例成员变量的默认值为0或0.0;一个布尔类型实例成员变量的默认值为false;一个字符类型实例成员变量的默认值为\u0000。
10/8/202340但如果不对一个实例成员变量进行显式的赋值,JVM就会将2、类成员变量(Classvariable)类变量必须在类体中声明,并且使用关键字static,因此也称为静态变量。①类变量在类被加载时完成相应的初始化工作。②类变量在一个运行系统中只有一份供整个类和实例对象共享的值,该值有可能被类(及其子类)和它们所创建的实例改变,每一次的改变都将影响到该类(及其子类)和其他实例的调用。③类变量的作用域是整个类。④类成员变量与类相关,而不与对象相关联。10/8/2023412、类成员变量(Classvariable)在修改一个类成员变量的时候,类(以及从这个类创建的对象)“看到”所发生的变化。类成员变量在加载类的时候被创建,在卸载类的时候被删除(某些JVM会卸载执行程序不再使用的类,以释放内存空间)。下面的代码片段声明了一个ClassFieldDemo类,其中包含类成员变量count的声明:
classClassFieldDemo{staticintcount;}当JVM加载c1assFieldDemo类时,它为count分配内存,并且将这个成员变量的内存清零。将count设为默认值0。注意:静态代码块也在类加载时被执行。10/8/202342在修改一个类成员变量的时候,类(以及从这个类创建的对象10/8/20234310/8/2023433、访问成员变量
当你声明一个类时,需要编写代码来访问成员变量。如何访问一个成员变量取决于下面这些因素:●成员变量是一个实例成员变量还是一个类成员变量●代码是通过同一个类的实例方法还是类方法来访问这个成员变量●代码是通过其他类的实例方法还是类方法来访问这个成员变量例子:10/8/2023443、访问成员变量当你声明前面的例子说明了以下成员变量访问规则:(1)如果用同一个类的实例方法访问实例成员变量,只需要指定成员变量名。(2)如果用同一个类的类方法访问实例成员变量,则必须创建一个对象,然后使用对象引用(带句点分隔符)来访问这个成员变量。但是在进行这些操作的时候,是通过一个对象的上下文,而不是类的上下文来实现的。(3)如果从同一个类的实例方法访问类成员变量,只需要指定成员变量名。(4)如果从同一个类的类方法访问类成员变量,只需要指定成员变量名。10/8/202345前面的例子说明了以下成员变量访问规则:(1)(5)如果从另一个类的实例方法访问实例成员变量,则必须创建一个对象,然后用对象引用(带句点分隔符)来访问实例成员变量。但是在进行这些操作的时候,是通过一个对象的上下文,而不是实例方法来实现的。(6)如果从另一个类的类方法访问实例成员变量,则必须创建一个对象,然后使用对象引用(带句点分隔符)来访问这个成员变量。但是在进行这些操作的时候,是通过一个对象的上下文,而不是类的上下文来实现的。(7)如果从另一个类的类方法访问类成员变量,则必须在类成员变量之前加上类名(带句点分隔符)。(8)如果从另一个类的实例方法访问类成员变量,则必须在类成员变量之前加上类名(带句点分隔符)。注意:如果直接从类方法访问实例成员变量,编译器将会报错。10/8/202346(5)如果从另一个类的实例方法访问实例成员变量,则必须创建3.4.2方法(实例方法和类方法)
方法表示一个对象的行为或者一个类的行为。在面向对象编程中,行为指的是一个对象向另一个对象发送的消息。发送消息的对象称为发送方(或源),接受消息的一方称为接受方(或目的)。10/8/2023473.4.2方法(实例方法和类方法)方法表示一1、方法定义修饰符返回数据类型方法名称(参数串行){…//程序语句return返回值;}[(public|private|protected)]([abstract]|[final][static][native][synchronized])typemethodIdentifier([parameterList]){[statement]...}10/8/2023481、方法定义修饰符返回数据类型方法名称(参数串行)[(p存取等级
同一类
同一package不同package其它类
子类
其它类子类public可
可
可
可
可
private可
不可
不可不可不可protected可
可
可
不可可
default可可
可
不可不可(1)访问描述符(方法的存取控制)
方法可以使用下面的访问描述符关键字:public,private或protected以及无修饰符4种。此关键字决定了这个方法对于其他类中代码的可访问程度。访问的范围从完全可访问到完全不可访问。10/8/202349同一package不同package其它类子类其它类(2)修饰符一个方法可以用下列修饰符关键字进行声明:abstract或final,static,native,或synchronized。这几个修饰符的作用分别是将方法变为抽象的(只带一个语法格式),将实例方法转换为类方法,让Java方法调用与平台相关的库的本地代码,以及将方法的执行限制到一个线程上。①当一个方法声明带abstract关键字时,它只由方法语法格式组成——没有语句块。另外这个方法所在的类也必须声明为abstract。最后,一个abstract方法不能声明为final,static,native,synchronized或者private(默认情况下,方法不是抽象的,它需要执行一个语句块)。10/8/202350(2)修饰符一个方法可以用下列修饰符关键字进行声明②当一个方法声明为final时,这个方法不能进行重载。换句话说,一个子类不能引入这个方法的新版本(默认情况下,一个子类可以重载一个方法)。③当一个方法声明为static时,这个方法只能访问类成员变量,不能访问实例成员变量(默认情况下,一个方法可以访问实例成员变量和类成员变量)。10/8/202351②当一个方法声明为final时,这个方法不能进行重载。换句④当一个方法声明为native时,JVM为本地方法调用做出安排,让执行传入本地库代码中。虽然这个功能可能有用(例如访问特殊平台的特殊功能),但是从平台无关性的角度讲,不提倡这种做法,它可能导致稳定性和安全性方面的问题。支持本地方法是因为标准库的这个部分(例如文件输人/输出部分)需要访问底层平台来执行其任务(默认情况下,一个方法不是本地的。⑤当一个方法声明为synchronized时,只能同时有一个线程执行方法的语句块,其他等待访问这个方法的线程被迫等到当前执行线程从这个方法中返回的时候,才得以执行(默认情况下,一个方法不是同步的)。10/8/202352④当一个方法声明为native时,JVM为本地方法调用做出2、实例方法和类方法(1)实例方法:①如果声明方法时没有用static修饰符关键字,那么这个方法就称为实例方法(instancemethod)。②实例方法与对象相关联,而不与类相关联。③实例方法可以访问实例成员变量和类成员变量。下面的代码片段声明了Truck类,它带一个实例方法setColor(),将参数c的内容赋给color实例成员变量:classTruck{privateColorcolor;voidsetColor(Colorc){color=c;}}10/8/2023532、实例方法和类方法(1)实例方法:下面的代码片段声明了Tr(2)类方法①如果一个方法是用static修饰符关键字来描述的,则称这个方法为一个类方法(classmethod)。②类方法与类相关联,而不与对象相关联。③类方法只能访问类成员变量。下面的代码片段声明了一个CircleTools类,它用一个circumference()类方法来访问类成员变量PI:classCircleTools{finalstaticdoublePI=3.14159;staticdoublecircumference(doublediameter){returnPI*diameter;}}10/8/202354(2)类方法下面的代码片段声明了一个CircleT3、调用方法在声明一个类时,需要编写调用方法的代码。代码如何调用一个方法取决于以下因素:●这个方法是一个实例方法还是一个类方法;●代码是通过同在一个类的实例方法还是类方法来调用这个方法;●代码是通过不在一个类的实例方法还是类方法来调用这个方法。
无论如何,调用方法的代码称为方法调用(methodcall),由方法名与参数列表组成。例子10/8/2023553、调用方法在声明一个类时,需要编写调用方法的前面的例子说明了以下方法调用规则:(1)如果实例方法调用同一个类的实例方法,只需要指定方法的名字。(2)如果类方法调用同一个类的实例方法,则必须创建一个对象,然后用对象引用(带句点分隔符)来调用这个方法。但是在进行这个操作时,是通过对象方法的上下文,而不是类方法的上下文来调用这个方法的。(3)如果从实例方法调用同一个类的类方法,只需要指定方法的名字。(4)如果从类方法调用同一个类的类方法,只需要指定方法的名字。10/8/202356前面的例子说明了以下方法调用规则:(1)如果(5)如果从实例方法调用另一个类的实例方法,则必须创建一个对象,然后用对象引用(带句点分隔符)来调用这个方法。但是在进行这个操作时,是通过对象方法的上下文,而不是类方法的上下文来调用这个方法的。(6)如果从类方法调用另一个类的实例方法,则必须创建一个对象,然后用对象引用(带句点分隔符)来调用这个方法。但是在进行这个操作时,是通过对象方法的上下文,而不是类方法的上下文来调用这个方法的。(7)如果从实例方法调用另一个类的类方法,则必须在类方法之前加上类名(带句点分隔符)作为前缀。(8)如果从类方法调用另一个类的类方法,则必须在类方法之前加上类名(带句点分隔符)作为前缀。10/8/202357(5)如果从实例方法调用另一个类的实例方法,关于方法的总结1.方法的定义(包括访问权控制符和修饰符)2.实例方法和类(静态)方法3.构造方法4.方法的调用方式(传值调用和传址调用)5.方法的返回值(返回值、返回引用(返回对象、返回数组))6.方法的重载、重构10/8/202358关于方法的总结1.方法的定义(包括访问权控制符和修饰符)1例3-410/8/202359例3-410/8/202359例3-5求10~100之间的所有素数。publicclassfindPrime{publicstaticbooleanprime(intn){for(intk=2;k<=Math.sqrt(n);k++)if(n%k==0)returnfalse;returntrue;}publicstaticvoidmain(Stringargs[]){for(intm=10;m<=100;m++)if(prime(m))System.out.print(m+",");}}10/8/202360例3-5求10~100之间的所有素数。publiccl3.5使用包组织类对象重用是面向对象编程的主要优点之一,在Java语言中,对象是以类的形式体现的,因此对象重用也就体现在类的重用上。一个类如果要在多个场合反复调用,可以把它存放在“包”中,这里的包实际上就是一组类组成的集合。包是一种松散的类的集合,通常,把具有共性的类放到同一个包中。包的组织采用分层结构,与文件系统中目录的组织对应一致,通常将逻辑相关的类放在同一个包中。包将类的命名空间进行了有效划分,同一包中不能有两个同名的类。10/8/202361
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司风险管理与预警响应体系框架
- 心理咨询师从业与发展指导手册
- 产品设计流程工具创意实现版
- 养禽养殖业管理技术手册
- 家庭责任之守护承诺书(3篇)
- 业务客户信息管理数据库模板
- 2026年贵州省沿河县九校初三语文试题下学期期末教学质量检测试题含解析
- 宁波市海曙区重点达标名校2025-2026学年初三中考仿真模拟冲刺考试(六)英语试题含解析
- 江苏省扬州市江都区十校2026年初三五月调研测试语文试题试卷含解析
- 会议设备使用与维护手册
- 应急疏散通道与标识设置
- 2024年常州机电职业技术学院高职单招语文历年参考题库含答案解析
- 加强锻炼预防疾病
- 普通地质学习题集及答案
- GB/T 44352-2024燃油蒸发排放系统用活性炭通用要求
- 大一下学期高等数学期末试题7套
- 办公区域防汛演练方案
- 9架空输电线路投运前监督检查汇报材料2
- 金属非金属地下矿山重大事故隐患排查表
- 研究生高级管理会计理论与实务全册教学课件
- 《速卖通跨境电商平台发展的问题及对策》
评论
0/150
提交评论