当前位置:
文档之家› 第三章 方法、方法重载、构造方法
第三章 方法、方法重载、构造方法
对象名.方法名();
2、小明过生日,爸爸送他一个电动狮子玩具, 编程测试这个狮子能否正常工作
方法调用
public class AutoLion { String color = "黄色"; //颜色 /*跑*/ public class TestLion { public void run(){ public static void main(String[ ] args) { System.out.println("正在以0.1米/秒的速度向前奔跑。"); AutoLion lion = new AutoLion(); } System.out.println(lion.showLion()); /*叫*/ lion.run(); public String bark(){ System.out.println(lion.bark()); String sound = "大声吼叫" ; } return sound; } } 在main()方法中 /*获得颜色*/ 调用类的方法 public String getColor(){ return color; 在类的方法中调用 } 该类另一个方法 /*显示狮子特性*/ public String showLion(){ return "这是一个" + getColor() + "的玩具狮子!"; } } 演示示例2:方法调用
值传递
• Java中进行赋值操作或方法调用中传递参数时,遵循值传 递的原则: • 基本类型数据传递的是该数据的值本身 • 引用类型数据传递的是对对象的引用(句柄),而非对象 本身
按此按钮, 狮子开始跑
类的方法
电动玩具狮子 属性: 颜色:黄色
行为: 跑 叫
按此按钮, 狮子开始叫
• 1、写出狮子对象的“跑”方法、 “叫”方法
public class Student{ public String showInfo(){ return "我是一名学生"; } public double getInfo(){ double weight = 95.5; double height = 1.69; return weight; } }
类的方法
• 方法:是类或对象的行为特征的抽象,方法是一个命名的 代码块,如同数学中的函数 • 作用:方法只能完成一个特定的功能,它可以把程序中的 特定功能组合到一起,便于多次使用。也使程序变得清晰。 • 声明格式:
– [修饰符] 返回值类型 方法名([形参列表]){
• 局部变量声明 • 执行语句
– }
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(String name, String school) { = name; //设定教员姓名 this.school = school; //设定教员的所在中心 } public String introduction() { return "大家好!我是" + school + "的" + name ; } }
PrintStream
方 法 重 载
println(int) println(char) println(String) ……
public class Test { public static void main(String[ ] args) int i = 0; char c = 'z'; String str = "hello"; System.out.println(i); System.out.println(c); System.out.println(str); } } 调用不同的println方法
}
方法体
如何定义类的方法
• 类的方法定义类的某种行为(或功能)
方法的名称
方法返回的数据类型
方法的定义
方法的主体
定义类的方法
public 返回值类型 方法名() { //这里编写方法的主体
步骤一:定义方 法名以及返回值
}
步骤二:编写方 法体
方法的返回值
• 两种情况
– 如果方法具有返回值,方法中必须使用关键字return返回该值, 返回类型为该返回值的类型
局部变量avg的作用域仅限于calcAvg()方法
方法重载Overload
• Java允许一个类中定义多个同名的方法,只要形参列表不 同就可以,如果同一个类中包含两个或两个以上的方法名 称相同 ,则称为方法重载 • 要求:
– – – – 方法名相同 参数类型、个数,顺序至少有一项不同 方法的返回类型可以不相同 方法的修饰符可以不同
多个方法不能相互嵌套定义!
常见错误4-4
public class Student{ int age=20; if(age<20){ System.out.println("年龄不符合入学要求!"); } public void showInfo(){ return "我是一名学生"; } }
不能在方法外部直接写程序逻辑代码!
• 原则:只对不同的数据完成基本相同的任务的方法才用方 法重载
方法重载Overload
• 优点:
– 不必对相同的操作使用不同的方法名 – 有助于更轻松的理解和调试代码 – 易于维护代码
Math类中两个max方法,满足重载条 件 public class Math{ int max(int a,int b){ return a>b?a:b; } double max(double a,double b){ return a>b?a:b; } }
成员变量和局部变量2-2
谁能使用这些变量?
public class AutoLion{ 成员变量
变量1类型 变量1; 变量2类型 变量2; 变量3类型 变量3;
AutoLion类的方法, 其他类的方法
public 返回类型 方法1(){ 变量4类型 变量4; } public 返回类型 方法2(){ 变量5类型 变量5; } }
生活中的方法重载
类 方法 方法参数 方法实现
启动、行驶、…… 轿车 驾驶 司机 巴士 等待乘客上车、启动、 行驶、到站停车、……
正点发车、行驶、 到站停车、…… 火车 如果用代码实现,我们需要三个方法,这些方法的方法名称 相同,参数类型不同
方法重载的代码示例 1
• 方法重载并不陌生 • java.io.PrintStream类的println方法能够打印数据并换 行,根据数据类型的不同,有多种实现方式
类的方法示例
AutoLion类代码实现
返回类型 public class AutoLion { String color = "黄色"; public void run(){ System.out.println("正在以0.1米/秒的速度向前奔跑"); } 方法名称
public String bark(){ String sound = "大声吼叫" ; return sound; }
常见错误4-1
public class Student{ public void showInfo(){ return "我是一名学生"; } }
方法的返回类型为void,方法中不能有return返回值!
常见错误4-2
public class Student{ public double getInfo(){ double weight = 95.5; double height = 1.69; return weight, height; } }
方法不能返回多个值!
常见错误4-3
public class Student{ public String showInfo(){ return "我是一名学生"; public double getInfo(){ double weight = 95.5; double height = 1.69; return weight; } } }
方法名相同,参数类型不同
方法重载的代码示例 2
ng.Math类的max()方法能够从两个数字中取出最 大值,它有多种实现方式 运行时,Java虚拟机先判断给定参数的类型,然后决定 到底执行哪个max()方法
Math
方 法 重 载
max(int a,int b) max(float a,float b) max(long a,long b) max(double a,double b)
return 表达式; 作用: 跳出方法 给出结果
– 如果方法没有返回值,返回类型为void
public class Student{ String name = "张三"; 编译错误 public void getName(){ return name; } …… }
返回类型要匹配
方法调用
• 方法是个“黑匣子”,完成某个特定的应用程序功能,并 返回结果 • 方法调用:执行方法中包含的语句