您好,欢迎访问三七文档
八.类与方法一.方法(函数)•1.1定义:一些语句的集合实现一个功能.并且由一个名称来代表该集合•1.2制作方法的格式:•返回值类型方法名称(参数列表){•//代码•return返回值;•}例1:制作方法示例•intfun(){•return100;•}voidName(){•System.out.println(我叫XXXX);•}•intRect(intl,intw){•intres;•res=l*w;•returnres;•}名词解释•返回值类型:返回给调用者一个什么类型的值。•方法名称:方法名称随便起,但是最好有一定意义.•参数列表:调用者必须要提供给方法的数据.•返回值:返回给调用者的数据•return:立即返回的意思.1.3执行方法•1.3.1如何调用方法•格式:•方法名称(提供参数表);•1.3.2使用方法的要点•I.方法必须有返回值,void类型除外.•II.无论什么情况下遇到(执行到return就立刻结束当前方法.•III.无论有无参数,括号不能省略不写.1.4方法重载•当我们想用一个函数名完成两件事的时候,就称这个函数是重载的函数。•相同函数名称,相同的返回值类型,不同的参数.方法重载示例•voidfun1(){•System.out.println(HelloWorld);•}•voidfun1(Stringstr){•System.out.println(str);•}名称为fun1名称为fun1二.类•2.1以对象的问题思考问题•简单的说,面向对象的思维就是以对象为中心来思考问题.•以对象为中心思考问题,首先要识别出问题中的对象,以及对象上的属性与可操作方法.2.1.2识别问题中的”对象”与”属性”•例:有一个帐户,帐户中有存款余额,您可以对帐户进行存款与取款的动作,别且可以查询以取得存款余额.•分析:帐户是一个比较单纯的问题,可以从问题当中的名词来识别出对象,描述中有“帐户”与“余额”两个名词,基本上两个名词都可以识别成对象,然而在这么简单的问题当中,设计精度不需要那么细,所以您先识别出“帐户”这个对象就可以了识别出对象与属性•识别出对象之后,接下来看看对象上有什么属性(比如对象上拥有什么特征或是可表示的状态)。属性是对象上的静态特性,属性基本上也可以从名词上识别。在这个例子中,您可以将“余额”作为帐户的属性之一.有一个帐户,帐户中有存款余额,您可以对帐户进行存款与提款的动作,并可以查询已取得存款余额。名词名词帐户存款余额2.1.3识别出对象上的方法•接着要识别对象上的方法,也就是识别对象上的动态特性,就是对象本身可操作或提供操作的接口,问题描述上的动词可能就可以识别为方法,例如“存款”、“取款”、“查询余额”等动作,就可以识别为对象上的方法识别出对象上的方法有一个帐户,帐户中有存款余额,您可以对帐户进行存款与提款的动作,并可以查询已取得存款余额。名词名词帐户存款余额存款提款查询余额方法2.2使用class关键字定义类•在面向对象设计中,对象并不会凭空产生,您必须识别出问题中的对象,并对这些对象加以定义。要定义一个规范,在Java中这个规范称之为类(class),使用类定义出对象的规范,再根据类来构建出一个个的对象,然后通过对象所提供的操作方法来与程序互动.例2.制作帐户类•例:publicclassAccount{•privateStringZhangHao;•privatedoubleQian;•publicAccount(StringZhangHao,doubleQian){•this.ZhangHao=ZhangHao;•this.Qian=Qian;•}•publicStringgetZhangHao(){•returnthis.ZhangHao;•}•publicdoublegetQian(){•returnQian;•}•}关键词类名称成员封装等级构造函数方法名称方法名称分析•首先看到例子中的class,这是Java中用来定义类的关键词,能记得一个类定义是这个样子的就可以。•class类名称{•//实体内容•}•Account是为类取的名称,由于这个类使用的public关键词修饰,所以文件的名称必须与类同名,也就是说必须要叫Account.java,这是规定,在一个文件中可以定义数个类,但只能有一个类被设置为public,文件名称主文件名称必须与类同名.2.3类内成员封装等级•在类内有四种封装等级,分别是:publicprivateprotected和默认(什么也不写).•这么些关键词是用来控制某个类内的方法或者属性是否能被其他的类访问或使用的.控制类内的属性与方法活动范围的关系表访问符不同情况下publicprotected缺省private类内OKOKOKOK包内OKOKOK子类关系OKOK任何类OK三.类内成员•3.1成员分类•在一个类中有两种成员.数据成员与成员方法.•I.数据成员称为类内的属性,指的是封装在类内的变量或对象•II.成员方法称为类内的方法,指封装在类内的函数*重点:Java语言中设计类的基本原则:信息最小化公开.•就是说尽量通过方法来操作对象,而不直接存取对象内部数据成员,信息最小化公开原则是基于安全性的考虑,避免程序设计人员随意操作数据成员而造成的程序错误.3.2类的构造函数•3.2.1什么是构造函数•与类同名的方法称为构造函数,且它没有返回值•3.2.2构造函数是自动执行的?•在类构造对象时构造函数会自动执行,进行初始化类内一些信息.•3.2.3构造函数的用途•对类内数据成员初始化.例3:构造函数•classHello{•publicHello(){System.out.println(Hello);•}•publicstaticvoidmain(String[]args){•Helloh1=newHello();•}•}构造函数3.2.4构造函数的重载•classHello{•publicHello(){//构造函数•System.out.println(Hello);•}•publicHello(Stringstr){•System.out.println(str);•}•publicstaticvoidmain(String[]args){•Helloh1=newHello();•Helloh2=newHello(“您好”);•}•}构造函数构造函数3.2Java中没有析构函数•在Java中并没有析构函数,因为Java中有垃圾回收机制,但是Java中有finalize()方法,finalize会在对象被回收时执行,但不可以将他当作析构函数来使用.•如果确定不再使用某个对象,可以在参考至该对象的名称上指定null,表示这个名称不在参考至任何对象,不被任何名称参考的对象将会被回收。强制垃圾回收方法:•System.gc();•//回收之前会执行finalize()方法.强制回收与finalize()•publicclassGcTest{•publicstaticvoidmain(String[]args){•testGCobj1=newtestGC(object1);•testGCobj2=newtestGC(object2);•testGCobj3=newtestGC(object3);••obj1=null;•obj2=null;•obj3=null;•System.gc();•while(true);•}•}•classtestGC{•privateStringname;•publictestGC(Stringname){•this.name=name;•System.out.println(name+建立);•}•protectedvoidfinalize(){•System.out.println(name+被回收);•}四.关于this•它是隐含在类内的指向该对象的引用名称.五.关于static•静态成员属于类所有,可以在不使用引用名称下,直接使用类名称加上运算符号来存取静态成员•静态方法中没有this引用名称,由于没有this,所以在Java的静态方法中不允许使用非静态成员.5.1静态区域•静态区域:•使用静态区域进行成员初始化.•classtestStaticZone{•static{•//一些初始化代码•}•}六类-实战•在使用数组的过程中,“读”与”写”的时候如果不注意的话经常会发生索引出界的错误,一但出现错误程序就会退出,为了更好的使用数组,封装安全数组类,对存与取进行控制,如果超出界限就提示出错而不是退出程序。问题分析•名词:数组•动词:存与取•方法:对数组的存取进行操作•解决问题:存取过程中判断索引是否超出界限
本文标题:08_类与方法
链接地址:https://www.777doc.com/doc-3694994 .html