方法的重载(overload)
要求:
1、同一个类中
2、方法名必须相同
3、方法的参数列表不同(①参数的格式不同②参数类型不同)
补充:方法的重载与方法的返回值类型没有关系!
对象作为参数传递的练习
(1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个findArea()方法返回圆的面积。
(2)定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下:public void printAreas(Circle c,int time)
在printAreas方法中打印输出1到time之间的每个整数半径值,以及对应的面积
例如,time为5,则输出半径1,2,3,4,5,以及对应的圆面积
在main方法中调用printAreas()方法,调用完毕后输出当前半径值。
package com.company;
class Circle {
double radius;
public double findArea() {
return Math.PI * radius * radius;
}
public void setRadius(double r) {
radius = r;
}
public double getRadius() {
return radius;
}
}
public class PassObject {
public void printAreas(Circle c, int time) {
System.out.println("Radius" + "\t\t" + "Area");
int i = 1;
while (i <= time) {
c.setRadius(i);
System.out.println(c.getRadius() + "\t\t\t" + c.findArea());
i++;
}
c.setRadius(i);
}
public static void main(String[] args) {
Circle c = new Circle();
PassObject p = new PassObject();
p.printAreas(c, 5);
System.out.println("now radius is " + c.getRadius());
}
}
匿名类对象:创建的类的对象是匿名的
(1)当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象。
(2)特点:创建的匿名类的对象只能够调用一次!
可变个数的形参
采用数组形参来定义方法
public static void test(int a,String[] books);
以可变个数形参来定义方法
public static void test(int a,String...books);
说明:
1. 可变参数:方法参数部分指定类型的参数个数是可变多个
2. 声明方式:方法名(参数的类型名...参数名)
3. 可变参数方法的使用与方法参数部分使用数组是一致的
4. 方法的参数部分有可变形参,需要放在形参声明的最后
5. 可变个数的形参的方法与同名的方法之间构成重载
6. 可变个数的形参在调用时,个数从0开始,到无穷多个都可以
7. 在一个方法中,最多声明一个可变个数的形参
方法的参数值传递机制(重点、难点)
1、形参:方法声明时,方法小括号内的参数
实参:调用方法时,实际传入的参数的值
2、规则:java中的参数传递机制:值传递机制
1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量
2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量
package com.company;
public class TestValue {
public static void main(String[] args) {
TestValue tv = new TestValue();
tv.first();
}
public void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v, i);
System.out.println(v.i);
}
public void second(Value v, int i) {
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
class Value {
int i = 15;
}
内存图:
输出结果: