您的位置:首页 > 编程语言 > Java开发

JAVA面向对象之方法

2015-12-23 21:34 274 查看
一、方法的重载

Java允许在同一个类中定义几个同名的方法,只要这些方法具有不同的参数列表,即方法的参数类型不同,或方法参数个数不同。这种做法称为方法的重载。方法的重载包括以下几种:

1、成员方法的重载

重载方法的参数表必须不同,参数的不同主要是参数的类型、顺序、个数不同。

public class MethodOverload
{
public int sum(int a, int b)
{
System.out.println("sum(int a, int b)");
return a + b;
}

public double sum(double a, double b)
{
System.out.println("sum(double a, double b)");
return a + b;
}

public static void main(String[] args)
{
MethodOverload overload = new MethodOverload();
overload.sum(10, 10);
overload.sum(10.0, 10.0);
}
}


在上面的例子中定义了同名的方法sum,但参数列表不同,为了区分实际调用的方法,在sum方法中输出了方法的原型,运行后可得到如下结果:
sum(int a, int b)

sum(double a, double b)

由此我们可以看不到,虽然方法的方法名相同,但是Java会根据实际情况调用最适合的方法。

2、构造方法的重载

在上一篇博客中也提到了一些构造方法重载的知识,定义多个构造方法其实就是构造方法的重载。当一个类中存在多个重载的构造方法时,他们之间可以相互调用,这种调用通过关键字this实现,同时this调用语句必须是构造方法中的第一个可执行于语句。

3、注意

a、参数顺序

因参数的顺序不同而构建的重载的方法,一定要建立在类型不同的基础上,如果本身类型和个数相同,则不存不在顺序问题。

b、返回值

重载方法的返回类型可以相同,也可以不同,但如果仅是返回类型不同,而方法名和形参列表都相同,则是非法的。

二、方法间的参数传递

方法声明时的参数称为形式参数(形参)。直到方法被调用时,才被变量或其他数据所替代,而这些具体的变量或数据被称为实际参数。要调用一个方法必须提供实际参数,并且参数类型与顺序必须要与形式参数相对应。

1、基本数据类型的参数传递

public class Value
{
public void change(int a)
{
a += 1;
}

public static void main(String[] args)
{
Value value = new Value();
int a = 10;
value.change(a);
System.out.println(a);
}
}


运行后输出结果为:10
此种传递方式形式参数就相当于方法中定义的局部变量,方法调用结束后就被释放了,不会影响到主程序中同名的局部变量,即在方法中对形参进行修改后不会影响到实际传递的实参。

2、引用数据类型的参数传递

public class Ref
{
private int a;
public void change(Ref ref)
{
ref.a += 1;
}

public static void main(String[] args)
{
Ref ref = new Ref();
ref.a = 10;
ref.change(ref);
System.out.println(ref.a);
}
}


运行后输出结果为:11
对象的引用变量并不是对象本身,它们只是对象的引用(名称)。就好像一个人可以有多个名字,同理,一个对象也可以有多个引用名称。因为实际的对象是同一个,所以在方法中对其进行修改后,会影响其它地方的引用。一定要注意区分这两种传递的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 方法