方法方法重载构造方法.ppt_第1页
方法方法重载构造方法.ppt_第2页
方法方法重载构造方法.ppt_第3页
方法方法重载构造方法.ppt_第4页
方法方法重载构造方法.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、类的方法,方法:是类或对象的行为特征的抽象,方法是一个命名的代码块,如同数学中的函数 作用:方法只能完成一个特定的功能,它可以把程序中的特定功能组合到一起,便于多次使用。也使程序变得清晰。 声明格式: 修饰符 返回值类型 方法名(形参列表) 局部变量声明 执行语句 ,类的方法,声明格式: 修饰符 返回值类型 方法名(形参列表) 局部变量声明 执行语句 返回值类型:基本数据类型或引用数据类型 方法名:符合标识符的命名规则 方法名后必需加() 形参:接收方法调用者传递过来的数据,可以是基本数据类型或引用 数据类型,多个参数以,号隔开 实参:调用方法时实际传递给方法的参数 方法返回值:用return

2、 语句,把一个确定的值返回给调用者,return 的返回值 类型必需与声明的返回值类型匹配,无返回 值用void关键字,值传递,Java中进行赋值操作或方法调用中传递参数时,遵循值传递的原则: 基本类型数据传递的是该数据的值本身 引用类型数据传递的是对对象的引用(句柄),而非对象本身,类的方法,1、写出狮子对象的“跑”方法、 “叫”方法,电动玩具狮子 属性: 颜色:黄色 行为: 跑 叫,按此按钮, 狮子开始叫,按此按钮, 狮子开始跑,类的方法示例,AutoLion类代码实现,public class AutoLion String color = 黄色; public void run() S

3、ystem.out.println(正在以0.1米/秒的速度向前奔跑); public String bark() String sound = 大声吼叫 ; return sound; ,方法体,返回类型,方法名称,如何定义类的方法,类的方法定义类的某种行为(或功能),方法的名称,方法的主体,方法返回的数据类型,定义类的方法,public 返回值类型 方法名() /这里编写方法的主体 ,步骤一:定义方法名以及返回值,步骤二:编写方法体,方法的返回值,两种情况 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型 如果方法没有返回值,返回类型为void,pub

4、lic class Student String name = 张三; public void getName() return name; ,返回类型要匹配,return 表达式;,编译错误,作用: 跳出方法 给出结果,方法调用,方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句,对象名.方法名();,2、小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作,方法调用,public class AutoLion String color = 黄色; /颜色 /*跑*/ public void run() System.out.printl

5、n(正在以0.1米/秒的速度向前奔跑。); /*叫*/ public String bark() String sound = 大声吼叫 ; return sound; /*获得颜色*/ public String getColor() return color; /*显示狮子特性*/ public String showLion() return 这是一个 + getColor() + 的玩具狮子!; ,public class TestLion public static void main(String args) AutoLion lion = new AutoLion(); Syst

6、em.out.println(lion.showLion(); lion.run(); System.out.println(lion.bark(); ,在类的方法中调用 该类另一个方法,在main()方法中 调用类的方法,方法调用小结,方法之间允许相互调用,不需要知道方法的具体实现,提高了效率,public class Student public void showInfo() return 我是一名学生; ,方法的返回类型为void,方法中不能有return返回值!,常见错误4-1,public class Student public double getInfo() double w

7、eight = 95.5; double height = 1.69; return weight, height; ,方法不能返回多个值!,常见错误4-2,public class Student public String showInfo() return 我是一名学生; public double getInfo() double weight = 95.5; double height = 1.69; return weight; ,多个方法不能相互嵌套定义!,常见错误4-3,public class Student public String showInfo() return 我

8、是一名学生; public double getInfo() double weight = 95.5; double height = 1.69; return weight; ,public class Student int age=20; if(age20) System.out.println(年龄不符合入学要求!); public void showInfo() return 我是一名学生; ,不能在方法外部直接写程序逻辑代码!,常见错误4-4,小结1,编写电池类(Cell):具有品牌属性,可以续电 编写测试类(TestCell),成员变量和局部变量2-1,变量声明的位置决定变量作

9、用域 变量作用域确定可在程序中按变量名访问该变量的区域, for(int i = 0, a = 0; i 4; i+) a+; System.out.println ( a ); ,代码错误,a的作用域仅在for循环中,成员变量和局部变量2-2,变量1类型 变量1; 变量2类型 变量2; 变量3类型 变量3;,public 返回类型 方法1() 变量4类型 变量4; public 返回类型 方法2() 变量5类型 变量5; ,public class AutoLion,AutoLion类的方法, 其他类的方法,谁能使用这些变量?,方法1,方法2,成员变量,局部变量,局部变量,成员变量和局部变量

10、的区别,作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内部都是可见的 初始值不同 Java会给成员变量一个初始值 Java不会给局部变量赋予初始值 在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量,public class Test int score1 = 88; int score2 = 98; public void calcAvg() int avg = (score1 + score2)/2; public void showAvg() System.out.println(平均分是: + avg); ,常见错误,局部变量avg的作用

11、域仅限于calcAvg()方法,方法重载Overload,Java允许一个类中定义多个同名的方法,只要形参列表不同就可以,如果同一个类中包含两个或两个以上的方法名称相同 ,则称为方法重载 要求: 方法名相同 参数类型、个数,顺序至少有一项不同 方法的返回类型可以不相同 方法的修饰符可以不同 原则:只对不同的数据完成基本相同的任务的方法才用方法重载,方法重载Overload,优点: 不必对相同的操作使用不同的方法名 有助于更轻松的理解和调试代码 易于维护代码,public class Math int max(int a,int b) return ab?a:b; double max(doub

12、le a,double b) return ab?a:b; ,Math类中两个max方法,满足重载条件,生活中的方法重载,类,方法,方法参数,方法实现,司机,轿车,巴士,火车,驾驶,启动、行驶、,等待乘客上车、启动、 行驶、到站停车、,正点发车、行驶、 到站停车、,如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同,方法重载的代码示例 1,方法重载并不陌生 java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式,public class Test public static void main(String arg

13、s) int i = 0; char c = z; String str = hello; System.out.println(i); System.out.println(c); System.out.println(str); ,PrintStream,println(int) println(char) println(String) ,方法名相同,参数类型不同,调用不同的println方法,方法重载,方法重载的代码示例 2,java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式 运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个max

14、()方法,public class Test public static void main(String args) Math.max(1,2); Math.max(1.0F,2.F); Math.max(1.0,2); ,方法重载,构造方法重载 2-1,构造方法重载是方法重载的典型示例,public classTeacher7 private String name; / 教员姓名 private String school = 长沙; / 所在中心 publicTeacher7(String name) = name; /设定教员姓名 publicTeacher7(S

15、tring name, String school) = name; /设定教员姓名 this.school = school; /设定教员的所在中心 public String introduction() return 大家好!我是 + school + 的 + name ; ,构造方法重载,构造方法重载 2-2,通过调用不同的构造方法来表达对象的多种初始化行为 例如: 默认情况下,教师来自北京中心,初始化时,只需提供教员姓名 有时,需要提供所在中心名称及教员姓名,public classTeacher7Test public static void main(Stri

16、ng args) Teacher7 teacher1 = newTeacher7(李芳); System.out.println(roduction(); AccpTeacher7 teacher2 = newTeacher7(张欣, 天津中心); System.out.println(roduction(); ,大家好!我是北京中心的李芳 大家好!我是天津中心的张欣,方法重载(常见错误),public class Math int Max(int a,int b) return ab?a:b; int max(int b,int b) retu

17、rn ab?a:b; ,方法名不相同,不构成重载,构造方法,构造方法是一个特殊的方法,用于创建类的对象,并完成一些初始化工作,它总是与new关键字一起使用来创建对象. 要求: 方法名必需与类名相同 不能声明返回类型 构造方法不能被子类继承,不能被static,final,abstract,native修饰 重载构造方法 当创建一个对象时,在不同的条件下,可能有不同的初始化行为,则需定义不同的构造方法,构造方法,默认的构造方法 默认的构造 方法是指无参数的构造方法,可分为两种 隐含的默认构造方法 程序显示定义的默认构造方法 在一个类中,没有定义构造方法,java编译器会提供一个无参数的构造 方法

18、,如果定义了构造方法,则编译器不会提供默认的无参构造方法.,构造方法示例,public class Person String name ; public Person() public Person(String _name) name = _name; ,构造方法,重载构造方法,构造方法(常见错误),public class Person String name ; public void Person() public Person(String _name) name = _name; public static void main(String args ) Person p = n

19、ew Person(); ,方法有返回类型,尽管是一个方法,但不是构造方法,编译错误,默认无参数的构造方法在自定义了构造方法后,java编译器不再提供,无法调用无参构造方法创建Person类的实例,给定如下Java代码,请指出代码中的错误,并解释原因。,public class Sample private int x; public Sample() x = 1; public Sample(int i) x = i; public int Sample(int i) x = i; return x+; private Sample(int i, String s) public Sample(String s,int i) private Sampla(int i) x=i+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论