《第04章 方法.ppt》由会员分享,可在线阅读,更多相关《第04章 方法.ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章 方法4.1 学习目标l创建方法、调用方法和参数传递l掌握方法重载,了解岐义重载l掌握局部变量的作用域l学习方法抽象的概念l了解Math类中的方法l理解包的概念及用法2面向对象技术面向对象技术4.2 创建方法与调用方法语法:修饰符 返回值类型 方法名(参数列表)/方法体public static int max(int num1,int num2)int result;if(num1 num2)result=num1;else result=num2;return result;int z=max(x,y);方法头方法体修饰符返回值类型方法名形式参数定义方法调用方法实际参数3面向对象技术
2、面向对象技术4.4 参数传递l参数传递要求实参与形参的次序、数量上匹配,类型兼容。lJava方法的参数传递是值传递(单向传递)。l例:CH04TestPassByValue.java4面向对象技术面向对象技术4.5 重载方法方法重载(overloading)是指两个或更多方法具有相同的方法名称但有不同的参数列表.例4.3 重载max方法:CH04TestMethodOverloading.java注意:被重载的方法必须具有不同的参数列表,不能基于不同的修饰符或返回值类型重载方法.Java编译器根据方法头标志调用最合适的匹配方法.问题:调用max(2,2.5)时,例4.3将调用哪一个max方法?
3、5面向对象技术面向对象技术4.5 重载方法lmax(1,2.0)lmax(1.0,2)有歧义的重载方法调用public static double max(int n1,double n2)if(n1 n2)return n1;else return n2;public static double max(double n1,int n2)if(n1 n2)return n1;else return n2;问题1:上面方法重载是否符合规范?问题2:下面方法调用是否可行,如果可行,调用哪个方法?lmax(1.0,2.0)lmax(1,2)6面向对象技术面向对象技术lmax(1,2.0)正常编译正
4、常编译lmax(1.0,2)正常编译正常编译lmax(1.0,2.0)找不到符号找不到符号max(double,double)lmax(1,2)对对 max 的引用不明确的引用不明确7面向对象技术面向对象技术4.6 局部变量的作用域l变量作用域:是指程序的一部分,变量可以在这一部分使用.l局部变量:在方法内部定义的变量.l局部变量的作用域:从该变量的说明开始到包含该变量的块体结束为止.public static void method().int i;.for(int j=1;j 10;j+).int k;.i的作用域j的作用域k的作用域8面向对象技术面向对象技术4.6 局部变量的作用域pub
5、lic static void method1()int x=1,y=1;for(int i=1;i 10;i+)x+=i;for(int i=1;i 10;i+)y+=i;不嵌套的不同块中,允许同名局部变量.嵌套的不同块中,不允许同名局部变量.public static void method2()int i=1;int sum=0;for(int i=1;i 10;i+)sum+=i;不要在块内说明变量,而在块外使用.for(int i=0;i 10;i+)System.out.println(i);9面向对象技术面向对象技术4.7 方法抽象抽象概念是开发软件的关键概念.方法抽象是指将方法
6、的应用与实现分离开来.方法头标志方法体可选的输入参数可选的返回值黑盒子10面向对象技术面向对象技术4.8 数学类 Mathl三角函数方法l指数函数方法l服务性方法数学类包含了执行基本数学运算的方法及常量PI和E.11面向对象技术面向对象技术4.12 包l查找定位类l避免命名冲突l便于发布软件l保护类包(package)用于对类进行组织.使用包的理由如下:12面向对象技术面向对象技术4.12.1 包的命名包是有层次关系的,一个包中还可以有包,称为子包.例如:java.lang.Math 其中:Math是包lang中的一个类;lang是包java中的一个子包.保证包名的唯一性非常重要,Java建议
7、采用Internet域名的倒序作为包的前缀.例如:在华南农业大学的主机上创建一个包mypackage.该主机的域名是,则按照Java建议方式,该包的完整名称:cn.edu.scau.mypackage.通常包名都用小写字母命名.13面向对象技术面向对象技术4.12.2 包的目录Java要求包名与文件系统的目录结构一一对应.cn.edu.scau.mypackage如右图.包所在的目录不一定是根目录,但要使java知道包的位置,必须修改环境变量classpath.如右图,包位于E:book目录中,则可以将classpath定义为:classpath=.;e:book14面向对象技术面向对象技术4
8、.12.3 在包中添加类Java中的每个类都属于某一个包,类在编译时被添加到包中.默认情况下,类在编译时放在当前目录(默认包).把类添加到指定包中,只需在源程序的最前端加上:package packageName;package com.prenhall.mypackage;public class Format public static double format(double number,int numberOfDecimalDigits)return Math.round(number*Math.pow(10,numberOfDecimalDigits)/Math.pow(10,numberOfDecimalDigits);例4.8编译格式:javac d 包所在目录 Format.java15面向对象技术面向对象技术4.12.4 使用包中的类有2种使用包中类的方式l使用类的全称 javax.swing.JOptionPane;l使用import语句导入包中的类导入包中全部类:import javax.swing.*;导入包中指定的类:import javax.swing.JOptionPane;16面向对象技术面向对象技术