在Java中super和this的区别

Posted 八两石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中super和this的区别相关的知识,希望对你有一定的参考价值。

摘要:在Java中我们会时常用到super及this的用法,现在我主要来区分一下super.和this.及superL()及this()之间的区别,来对它们的认识和了解:

  1.this的用法在Java中:

①:this.:this加点指此时代表当前对象,能操作当前类里面的所有属性及方法以及父类继承而来能被访问修饰符允许的属性和方法。

  super.:此时指代当前对象类的父类对象部分,不能操作到本类的属性和方法,能操作到父类的能被父类访问修饰符允许的属性和方法,只有当本类中调用被重写前的效果时使用super.的方法。

  语法:this.成员名  或者  this. 方法名

  例:这是this加点使用

public class DemoThis {
	private String name;
	private int age;
	public DemoThis() {
		this.print();// 你可以加上this来调用方法,
	}
	public DemoThis(String name, int age) {
		this.name = name;
		this.age = age;//这里就必须使用this加点的方法来区分,this.name就指代当前的属性name;
	} 
	public void setName(String name) {
		this.name = name; // 此处必须指明你要引用成员变量
	}

	public void setAge(int age) {
		this.age = age;
	}

	public void print() {
		System.out.println("Name=" + name + " Age=" + age); // 在此行中并不需要用this,
															// 因为没有会导致混淆的东西
	}
}

  例:super加点的使用,

package com.lov.lianxiText;

public class DemoThis {//父类
	private String name;
	private int age;
	public DemoThis() {
	}
	public void print() {
		System.out.println("哈哈哈哈。。。。。");										
	}
}

  

package com.lov.lianxiText;

public class Demo extends DemoThis {//子类
	public Demo(){
		
	}
	public void print(){
		super.print();//只有这个时候用super.方法,其他我们基本用this.方法
		System.out.println("嘿嘿嘿.......");
	}
}

 总结:有上面我们可知道,this.的使用范围要比super.的范围更大,除了上面要看重写前的效果能super,我们都是用this.的方法。

2:this()与super()

 ①this()和super()都是使用只能使用于构造方法中,

 ②this()调用本类的构造,如果括号内有形参,则是调用本类的与之相对应参的构造方法;super()调用父类指定的构造方法,

 ③都只能写在构造方法的第一句;

 ④super()可以不写,在不写的时候会默认调用父类的无参构造,

 ⑤this()与super()不能共存,两者只能使用一个。

 

以上是关于在Java中super和this的区别的主要内容,如果未能解决你的问题,请参考以下文章

this和super用法的区别与细节(java继承中this和super的比较)(简洁而精炼)

java 类方法代码块修饰式关键字总结

详解Java中super的几种用法并与this的区别

Java中this与super的区别以及用法

java基础---this,super和integer

Java中super的几种用法并与this的区别