对于java语言中的super关键字和this关键字的理解

对于java语言中的super关键字和this关键字的理解

(不足之处还望各位大佬指正)。

对于super定义为:代表父类的存储空间标识(可以理解为父亲的引用)
对于this定义为:代表当前对象的引用(谁调用就代表谁)

1.当然对于这样的定义看上去是有些懵的。通俗一点的说就是super在继承时就代表的是父类中的内容,this就是在使用时,代表了调用者这个对象。
2.有时候一些朋友会有这样的疑问:在子类的构造方法中,对于父类的构造方法并没有直接写上super();但是又调用了的,那么是怎么一回事呢?
这是因为在java中,每一个类都会至少有一个构造方法,当你没有为此类写上构造方法时,系统会自动的为此类增加一个默认的空参构造器。而在这个空参构造中的第一行也会默认的写上一句super(); 这样在使用时才能够创建这个类对象。(那不然没有构造方法,还怎么创建对象啊。)
如果是自己写上构造方法,(不管是空参,还是有参数的),那么这个时候系统就将不会默认赠送构造方法了,系统都会在这些构造方法中默认添加一行super(); (除非你是在构造方法中第一行写上super(有参)的一个调用,那么第一行就不会有空参的super()了。)
super和this的使用方法如下:

关于super的三种用法:
			1.在子类的构造方法中:super(参数列表);   表示调用父类中的构造方法(无参就super(),
													有参就在()中写上相对于的参数列表);
			2.在子类的成员方法中:super.父类的方法;表示调用父类中的对应的方法
			3.在子类方法中都可以调用父类的成员变量:super.变量名; 表示调用了父类的成员变量
关于this的三种用法:
			1.在本类中使用构造方法:this(参数列表);
			2.在本类中使用成员方法:this.方法名(参数列表);
			3.在本类中使用变量:	this.变量名;
			
**特别注意:关于构造方法中,调用super(参数列表)和this(参数列表)都只能是第一行书写代码,
		 那么就产生了一个现象,super和this不能同时存在于一个构造方法中。**

你可能感兴趣的:(java基础篇)