200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java重载中this的作用_Java2:构造方法 方法重载和this关键字

java重载中this的作用_Java2:构造方法 方法重载和this关键字

时间:2024-01-30 11:57:27

相关推荐

java重载中this的作用_Java2:构造方法 方法重载和this关键字

上一篇博客小编已经给读者介绍了Java入门的类与对象,这一章节我们来了解一下构造方法,方法重载以及this关键字。

一:构造方法

Java中方法一般有2中:普通方法和构造方法。我们已经知道普通方法的声明格式为:

访问修饰符 返回值类型 方法名(数据类型 参数名,...){

方法体……

}

那么构造方法的声明格式又是怎样的呢?

访问修饰符 构造方法名(数据类型 参数名,...){

方法体……

}

上面就是构造方法的声明格式,通过对比我们发现2种方法有不同的地方,我们需要牢记一下几点:

1.构造方法在声明处没有返回值类型。因此,在构造方法的方法体中不能使用return语句来返回一个值。

2.构造方法的方法名必须与类名一致。也就是说构造方法名就是类名,不能是其他名字。

在上一节介绍类与对象中,实例化对象的格式为:

类名 对象名 = new 类名(参数值,...);

而在介绍了构造方法后,我们需要修改实例化对象的格式:

类名 对象名 = new 构造方法名(参数值,...);

也就是说,在实例化对象的过程中,我们调用了构造方法,将括号内的参数传到构造方法的方法体中,调用构造方法的作用是什么呢?既然实例化了一个对象 ,我们肯定希望给这个对象赋予一定的属性,调用构造方法的作用,就是给对象的属性设置初始值。

来看一个例子。我们创建一个Student类,在类中写一个构造方法,然后输出一行字:

public class Student {

private String name;//name这个属性设为private型,即只能在本类中被访问

//声明一个构造方法

public Student(String name) {

this.name = name;

System.out.println(this.name + "正在学习Java!");

}

}

在创建一个Manager类,用来创实例化一个Student类的对象:

public class Manager {

public static void main(String[] args) {

//实例化对象:类名 对象名 = new 构造方法名(参数值,...);

Student stu = new Student("张三");

}

}

在Manager类中实例化对象的时候,调用Student类中的构造方法Student(String name);并且将张三这个参数赋给name,然后执行构造方法中的代码,将name赋给this.name,接着输出一行字,输出结果为:

张三正在学习Java!

可以看到,我们在创建一个对象stu的时候,调用了构造方法,给对象的name属性设置了一个初始值:张三。

补充:如果没有在类中定义构造方法,那么JVM会默认给你提供一个构造方法(无参数的构造方法);如果你在类中定义了构造方法,则JVM不会提供默认的构造方法了。

二:方法重载

我们先创建一个Student类:

public class Student {

public String name;

public Student() {

System.out.println("无参数的构造方法");

}

public Student(String name) {

this.name = name;

System.out.println("有参数的构造方法");

}

}

然后创建一个Manager类,实例化对象:

public class Manager {

public static void main(String[] args) {

//类名 对象名 = new 构造方法名();

Student stu = new Student();

System.out.println(stu.name + "正在学习Java!");

//类名 对象名 = new 构造方法名(参数值,……);

Student stu2 = new Student("张三");

System.out.println(stu2.name + "正在学习Java!");

}

}

我们来看看代码执行的结果:

无参数的构造方法

null正在学习Java!

有参数的构造方法

张三正在学习Java!

读者一定有很多疑惑,让我们来分析分析为什么是这样的执行结果吧!

首先,在Java中,代码是从上往下执行的,即先执行上一行的语句,然后按顺序执行下面的语句。在Manager类中,我们先是创建了一个stu对象,根据刚刚介绍的构造方法的内容,在创建这个对象的时候,我们调用了Student类中的Student();这个构造方法,调用这个方法就要执行方法中的语句,所以输出"无参数的构造方法";

在创建stu对象的语句后面是一个输出语句,因此调用完Student()方法后,就会输出"null正在学习",为什么是null呢?因为Student()方法的括号没有参数,this.name并没有被赋值,因此输出null;

接着,我们又创建了一个stu2的对象,这里我们调用的是Student("张三");这个方法,因为括号内有一个参数值"张三",因此调用的是Student(String name)这个方法,并将"张三"赋给name,然后执行this.name = name;System.out.println("有参数的构造方法");因此输出"有参数的构造方法";创建stu2的语句后面又是一个输出语句,执行后输出为"张三正在学习Java!"。

在Student类中,我们声明了2个构造方法,这2个方法的方法名一致(都是Student),但是参数个数、参数类型不同(一个有参数,一个没有参数),我们把这叫做方法的重载。

概括的的说,方法重载有一下条件:

1.必须在同类中或者是有继承关系的类中;

2.方法名必须要完全一致;

3.方法所带的参数(参数个数、参数类型、参数顺序)必须要不同。

三:this关键字

在上面我们的this.name中我们已经看到了this关键字,那么为什么要用this关键字呢?

如果我们把代码this.name = name;改为name = name;那么Java系统无法判断哪一个是Student(String name)方法中的参数name,哪一个是属性name;因此需要加一个this.name来区分,this.name表示属性。

除此之外,this还有一个用途:用来调用当前类中中构造方法或者是普通方法。

调用构造方法的格式为:this(参数值,...);

调用普通方法的格式为:this.普通方法名(参数值,...);

this关键字到底表示的是谁呢?this表示当前调用方法的对象;如果是a对象在调用方法,那么方法中this就表示a对象。this就类似于生活中"我"这个词的意思。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。