方法进阶使用

有时候我们的方法中可能会出现一些与成员变量重名的变量:

//我们希望使用这个方法,来为当前对象设定名字 void setName(String name) { }

此时类中定义的变量名称也是name,那么我们是否可以这样编写呢:

void setName(String name) { name = name; //出现重名时,优先使用作用域最接近的,这里实际上是将方法参数的局部变量name赋值为本身 }

我们来测试一下:

public static void main(String[] args) { Person p = new Person(); p.setName("小明"); System.out.println(p.name); }

我们发现,似乎这样做并没有任何的效果,name依然是没有修改的状态。那么当出现重名的时候,因为默认情况下会优先使用作用域最近的变量,我们怎么才能表示要使用的变量是类的成员变量呢?

Person p = new Person(); p.name = "小明"; //我们之前在外面使用时,可以直接通过对象.属性的形式访问到

同样的,我们如果想要在方法中访问到当前对象的属性,那么可以使用this关键字,来明确表示当前类的示例对象本身:

void setName(String name) { this.name = name; //让当前对象的name变量值等于参数传入的值 }

这样就可以修改成功了,当然,如果方法内没有变量出现重名的情况,那么默认情况下可以不使用this关键字来明确表示当前对象:

String getName() { return name; //这里没有使用this,但是当前作用域下只有对象属性的name变量,所以说直接就使用了 }

我们接着来看方法的重载。

有些时候,参数类型可能会多种多样,我们的方法需要能够同时应对多种情况:

int sum(int a, int b){ return a + b; }
public static void main(String[] args) { Person p = new Person(); System.out.println(p.sum(10, 20)); //这里可以正常计算两个整数的和 }
posted @ 2024-02-29 12:57  258333  阅读(3)  评论(0编辑  收藏  举报