对象的行为

上传人:子 文档编号:57056478 上传时间:2018-10-18 格式:PPT 页数:40 大小:235.50KB
返回 下载 相关 举报
对象的行为_第1页
第1页 / 共40页
对象的行为_第2页
第2页 / 共40页
对象的行为_第3页
第3页 / 共40页
对象的行为_第4页
第4页 / 共40页
对象的行为_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《对象的行为》由会员分享,可在线阅读,更多相关《对象的行为(40页珍藏版)》请在金锄头文库上搜索。

1、Chap 04 对象的行为 -成员方法详述,进一步掌握方法的定义和使用 掌握类的构造方法的概念和编写、使用 掌握方法的重载 掌握Getters与Setters方法的规范编写 理解封装的含义,Java中的方法,Java中的方法类似C语言中的函数,是一个可以被多次调用的相对独立的代码块,或者说是用来完成一个特定的任务的一小段程序。 我们已经见过的方法有: public static void main(String args); void setDim(double w,double h,double d); double getArea(); ,方法定义的格式,方法定义的格式: 修饰符 返回值类

2、型 方法名称(参数列表) /方法体中的语句 在 前面是方法头, 中间是方法体。 在 中的部分是可选项。根据需要可以不同,也可以没有。,自定义一个方法,public static void max(int a,int b) int m;if (ab) m=a;else m=b;System.out.println(“max=”+m); ,修饰符 返回值类型 方法名称(参数列表)/方法体中的语句 ,定义方法相关说明,public表示该方法是公开的,在别的类和方法里面都能“看到”这个方法。 static表示只有在静态方法里面才能访问这个方法。 void表示这个方法没有返回值。 方法的参数列表说明在调

3、用它时需要传入数据的个数、及每个的类型。,方法的调用,使用方法实现特定功能叫做方法的调用。public class Apppublic static void main(String s)int a = 5, b = 10, m1, m2 ;max(a,b) ;max(b,7) ;,调用方法时只写方法名称和实际 要处理的数据,如不需要传递数 据则只写方法名称和小括号。,方法调用的相关说明,一般形式:方法名 ( 实参 ) 注意: 不写类型,只写方法名称和实际参数(有时不写),括号不能省。 与方法定义的形式相一致:参数的类型、参数的个数、参数的次序。 无返回值的方法,其调用可作为单独语句。 有返回

4、值的方法,其调用可放在表达式中,或作为其他方法调用的参数。,方法的返回值,通过方法调用得到一个确定的值,就是方法的返回值。 方法的返回值是通过方法中的return语句获得的。 在return这个关键字后面是一个可以接受的值,它可以是一个简单的值,也可以是一个变量,还可以是一个表达式。 在定义方法时return语句中数据的类型要和指定返回值的类型一致,或者可以自动转换成返回要求的类型。,public static int max(int x,int y)return ( xy?x:y ); public static void main(String args)int num=10, m;m=m

5、ax(num,20);System.out.println(“最大值是”+m); ,带返回值的方法,定义方法的返回值类型为整型,通过return语句将返回值返回到调用位置,方法的参数,方法的形式参数: “形参”通常是方法所处理的数据、影响方法功能的因素或者方法处理的结果。 如无需传递数据则可以为空。,public static int max (int x, int y)return ( xy?x:y ); ,public static void welcome( )System.out.println(“*”);System.out.println(“欢迎使用本程序”);System.out

6、.println(“*”); ,方法的实际参数: 调用一个方法时,方法名后面小括号中的参数称为“实际参数”。 实参可以认为是真正参与实际操作被处理的内容。实参可以是常量、变量或表达式,但要求它们有确定的值。,方法的参数, int a=-3,b=5,c;c=max( 4, a+b);,方法的参数,方法的参数可以是复杂类型的数据,如类的对象、数组等。 数组作为方法的形式参数,要写清楚类型和中括号。数组作为方法的实参,只写数组名称。,double aver(double arr)/求形参数组arr所有元素的平均值; double price = 12.5,36.9,8.7,3,4.5; double

7、 a = aver(price);,方法的参数,基本类型数据作方法的参数,实参变量对形参变量的数据传递是“单向值传递”,即只由实参传给形参,而形参不能传回给实参。 public static void main(String s) int a=2,b=3;fun(a,b); static void fun(int x,int y) x=10;y=15; ,方法的参数,引用类型的参数(如数组、对象),实参代表的是数据的引用,即地址。实参将引用传递给形参,两边共用一个地址空间的数据。此时在方法内部对引用的数据作任何操作,结果将被保留。 注意数组作函数的参数,形参的里什么都不写。调用时实参只写数组名

8、称。,方法的参数,数组作方法的参数举例: import java.util.*; class ParamDemo02 public static void main(String args)int score = new int10;Scanner reader = new Scanner(System.in);for(int i=1;im)m = si;return m; ,方法的参数,对象作方法的参数举例: import java.util.*;public class MyFirstApp static Scanner reader = new Scanner(System.in);pu

9、blic static void main(String args)Hair hisHair = new Hair();System.out.println(“调用方法前“);hisHair.printInfo();change(hisHair);System.out.println(“调用方法后“);hisHair.printInfo();public static void change(Hair h)System.out.println(“请输入新的颜色“);h.setColor(reader.next();System.out.println(“请输入新的发型“);h.setStyle

10、(reader.next();class HairString color = “黑色“;String style = “板寸“;void printInfo()System.out.println(“头发的颜色是“+color+“造型是“+style);void setColor(String c)color = c;void setStyle(String s)style = s; ,类中方法的相关说明,在同一个类内部的方法: 在类的内部,成员方法可以对该类的成员变量直接访问。 class Boxint width,height,depth;void setDim(int w,int h,

11、int d)width = w;height = h;depth = d; ,类中方法的相关说明,在同一个类内部的方法: 在类的内部,成员方法之间可以相互直接访问(调用)。 class Boxint width,height,depth;void setDim(int w,int h,int d)width = w; height = h; depth = d;printInfo();void printInfo()System.out.println(“长:”+width+”宽:”+height +”高:”+depth); ,类中方法的相关说明,在同一个类内部的方法: 在类的内部,stati

12、c修饰过的静态成员可相互访问,其他成员不能访问static修饰的成员。相关内容将在第五部分具体介绍。,类中方法的相关说明,在不同类之间的方法: 在一个类的“外界”想要访问类内部的成员方法,需要使用该类创建对象。通过创建的实体(即对象)配合分量运算符“.”的使用,进行方法的调用。格式为:对象.方法名(实参),Box b1 = new Box(); b1.setDim(3,4,5);,类中方法的相关说明,在不同类之间的方法: static修饰过的方法可以在该类的外部通过类名.方法名(实参)进行调用。如Math.sqrt(85); Static相关内容将在第五部分详细讲解,此处不再展开。,方法的重载

13、,多个方法有相同的名字,不同的参数,便是方法的重载。 调用方法时编译器会自动根据实参表找到最匹配的方法去执行。找不到、或找到多个,均产生错误。 “貌似同一个方法,体现出不同功能”,方法的重载是面向对象程序设计多态的实现方式之一。,方法的重载,在一个类和它的子类中,可以定义同名的方法,叫方法重载,只要它们的参数列表各不相同,与返回类型无关。 所谓参数列表各不相同是指: 参数的个数不同; 参数的类型不同; 参数的顺序不同。,一个方法的重载也可以返回不同的数据类型, 但常用的是返回相同的类型。,方法的重载举例,重载Volume类中计算体积的方法,class Volumepublic int getV

14、ol(int l) return l* l * l;public int getVol(int l,int w,int h)return l * w * h;,方法名称 相同而参 数列表不 同实现方 法的重载,方法的重载举例,重载方法的调用。,class Volumepublic int getVol(int l) return l* l * l; public int getVol(int l,int w,int h) return l * w * h; ,Volume b = new Volume();System.out.println(b.getVol(10);System.out.p

15、rintln(b.getVol(7,8,9);,重载方法调用时 根据其参数类型、 个数和顺序来区分。,1000504,方法的重载,注意:方法参数列表中参数名称的不同不能构成方法的重载。 方法重载不正确的例子:void func1(int n, int m)void func1(int x, int y)void func2(float f, int n, char c)void func2(float m, int k, char x) ,构 造 方 法,构造方法是一类特殊的方法,从功能上讲, 它是用来对新创建的对象进行初始化的;从 形式上来讲,它有以下特点: 它与类同名 它没有任何返回值 除

16、了上述两点外,在语法结构上与一般的方法相同,构 造 方 法,Java要求程序中每个变量在使用前都要先初始化,包括新创建的对象。 在我们使用new关键字来创建一个类的对象时,我们实际上是在调用这个类的一个构造方法对对象进行构造。 如果Java在一个类里找不到自定义的构造方法,它就为这个类添写一个默认无参构造方法,该构造方法无任何执行语句,我们在程序代码中看不到它。之前我们编写的类,在创建对象时都是使用的默认构造方法。,构 造 方 法,构造方法“努力”构建对象,并且对对象进行初始化,如果需要,可以自己编写构造方法,在里面放上我们自己的初始化代码。 一旦我们在类中自己定义了构造方法,Java不再自动增加默认无参构造方法。如果需要,必须自己将无参形式的构造方法写出来。 构造方法也可以重载。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号