用this调用类的构造方法

转载 2015年11月18日 14:41:57

今天看书看到JAVA中This调用类的构造方法,书上写的不太明确,所以找了点资料补充了一下。

在一个Java类中,其方法可以分为成员方法和构造方法两种。构造方法是一个与类同名的方法, 在Java类中必须存在一个构造方法。如果在代码中没有显示的体现构造方法的话,那么编译器在编译的时 候会自动添加一个没有形式参数的构造方法。这个构造方法跟普通的成员方法还是有很多不同的地方。如 构造方法的话一律是没有返回值的。而且也不用void关键字来说明这个构造方法没有返回值。而普通的方 法可以有返回值、也可以没有返回值。不过如果普通的方法没有返回 值的话,那么一定要在方法定义的时候采用void关键字来进行说明。其次构造方法的名字有严格的要求, 即必须与类的名字相同。也就是说,Java编译器发现有个方法与类的名字相同才把其当作构造方法来对待 。而对于普通方法的话,则要求不能够与类的名字相同,而且多个成员方法不能够采用相同的名字。在一 个类中可以存在多个构造方法,这些构造方法都采用相同的名字。只是形式参数不同。Java语言就凭用户 参数的参数来判断调用那个构造方法。
this关键字除了可以调用成员变量之外,还可以调用构造方 法。如下面的代码:

1.           public class Student{ //定义一个类,类的名字为student。   

2.           public Student(){ //定义一个方法,名字与类相同故为构造方法  

3.            

4.           this(“luobo”)  

5.              }  

6.            

7.           public Student(String name){ //定义一个带形式参数的构造方法  

8.               }  

9.           } 

在上面这个代码中,定义了两个构造方法,一个带参数,另一个没有带参数。构 造方法都不会有返回值,不过由于构造方法的特殊性,为此不必要在构造方法定义时带上void关键字来说 明这个问题。在第一个没有带参数的构造方法中,使用了this(“luobo”)这个代码。在构造方法中使this关键字表示调用类中的构造方法。如果一个类中有多个构造方法,因为 其名字都相同,跟类名一致,这跟采用其他方法引用构 造方法一样,都是通过形式参数来嗲用构造方法的。如上例中,this关键字后面加上了一个参数,那么就 表示其引用的是带参数的构造方法。如果现在有三个构造方法,分别为不带参数、带一个参数、带两个参 数。那么Java编译器会根据所传递的参数数量的不同,来判断该调用哪个构造方法。从上面这个示例中可 以看出,this关键字不仅可以用来引用成员变量,而且还可以用来引用构造方法。

不过如果要使用这种方式来调用构造方法的话,有一个语法上的限制。一般来说,利用this关键 字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参数的构造方法。否则的话,翻译的 时候,就会有错误信息。这跟引用成员变量不同。如果引用成员变量的话,this关键字是没有位置上的限 制的。如果不熟悉这个限制的话,那么还是老老实实的采用传统的构造方法调用方式为好。虽然比较麻烦 ,但是至少不会出错。

相关文章推荐

Java中this调用重载构造函数

在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(….)来调用。   this(….)方法必须出现在构造器中的第一行,用来调用其他重...

java中this语句来调用其他构造方法的规则

大家对java构造方法的理解吗?对于java构造方法一般需要满足以下几条规则: (1)方法名必须与类名保持一致。 (2)不要声明返回类型。 (3)不能被static, final, synchr...

static方法 内不能用this调用本类方法原因

static叫静态方法,也叫类方法,就是在程序启动的时候,就会为这个方法分配一块内存空间,所以什么时候都可以调用这个方法。 没有static的其他方法,非静态方法,必须在类实例化时,才有内存空间,所以...

JAVA_SE基础——32.this关键字调用本类的构造方法

黑马入学blog... 也算是学习笔记。 下面我们来看段代码:

Java this()必须放在构造方法的第一句,在成员方法中不能用this()调用构造方法的原因

看Head First Java 256页 ,书中提到“this()只能用在构造函数中,且它必须是第一行语句!”,不明白原因,查资料发现知乎已经有相关问题,搬运过来做个记录。 https://www...

JAVA中this的三种用法的详解

JAVA中this的三种用法的详解

使用Java的子类调用构造方法super()和this()

package Test; abstract class FatherClass{ FatherClass(){ System.out.println("无参父类构造方法"); } ...

java中构造方法的调用和简单解释(this)

学习初级阶段,不懂的记录搜索一下

java构造方法,以及super、this关键字、隐式调用、显式调用

首先需要明白的是,当创建java对象时,程序总是依次调用每个父类的非静态初始化块、父类构造器(总是从Object开始)执行初始化,最后才调用该类的非静态初始化块、构造器执行初始化。 如果你不明白初始化...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)