欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

super和this区别

程序员文章站 2022-04-18 15:51:58
...

super

super表示引用父类,在继承的类使用,不能在其他的使用

Super出现在子类中,用来指定当前子类的父类对象

super的用法:

  1. Super就可以调用父类的属性
  2. Super就可以调用父类的方法
  3. Super就可以调用父类的构造函数

super在 父类的用法的特点:

  1. Super在子类中调用属性和方法的时候,大部分的情况和this调用的属性和方法同一个  this.getName()   == super.getName();
  2. 当子类重写了父类的方法的时候,super.showInfo() 就是父类的方法,this.showInfo()就是子类重写父类的方法
  3. Super 只能调用父类允许继承的那些方法和属性

Super调用父类的构造函数

在默认的情况下,子类的构造函数会默认调用父类的无参数的构造函数

Super() 代表调用父类的无参数构造函数(Super()写不写都一样),必须出现在子类构造函数的第一句

通过super(参数值列表)  来调用父类带参数的构造函数,也必须写在子类构造函数的第一句话

this

  1. 当前对象的引用
  2. 成员变量和局部变量,可以通过this关键字来调用
  3. this()也需要在构造函数的第一行
  4. This可以调用自己的任何方法

代码

package jicheng.com;

public class Dad {
	
	private String name;
	private String job;
	
	 public Dad() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Dad(String name, String job) {
		super();
		this.name = name;
		this.job = job;
	}

	String hobby="三国演义";
	
	public void attitude() {
		this.name="张华";//当前对象的引用
		System.out.println("认真地负责");
	}
	public void work() {
		this.job="郑州大学";
		System.out.println("他是"+this.job+"软件开发的教授");
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}
	

}

package jicheng.com;

public class Son extends Dad{
	 String job;

	public void work() {
		super.work();
		this.job=super.getJob();//调用父类的属性
		System.out.println("他在"+this.job +"读研");
	}
	
	

}

package jicheng.com;

public class Daughter extends Dad {
	String hobby="恋恋不忘";
	public void like() {
		super.attitude();//调用父类父类的方法
		System.out.println("女儿喜欢"+hobby);
	}
}

package jicheng.com;


public class Test {
		public static void main(String[] args) {
			Daughter daughter  =new Daughter();
			daughter.like();
			Son son=new Son();
			son.work();
		}
}