this与super

1、this和super都代表了什么

    this:代表当前对象的引用,谁来调用我,我就代表谁

    super:代表当前对象父类的引用

2、this和super的使用区别

    a、调用成员变量

    this.成员变量  调用本类的成员变量,也可以调用父类的成员变量

    super.成员变量  调用父类的成员变量。

    b、调用构造方法

    this(...) 调用本类的构造方法

    super(...)  调用父类类符构造方法‘

    c、调用成员方法

    this.成员方法  调用本类的成员方法,也可以调用父类符成员方法

     super.成员方法  调用父类的成员方法

3、继承中构造方法的关系

   子类中所有的构造方法默认都会访问父类中空参的构造方法

   为什么?

   因为之类会继承父类中的数据,可能还会使用父类的数据,所以,之类初始化之前,一定要先完成父类数据的初始化。

   其实,每一个构造方法的第一条语句默认都是:super()。

4、继承中构造方法的注意事项

super(...)或this(...)必须出现在构造方法的第一条语句上。两者是不能同时出现在同一段代码块的。

   * 父类没有无参构造方法,子类怎么办?

   * super解决

   * this解决

class Demo6_Extends {
	public static void main(String[] args) {
		Son s1 = new Son();
		System.out.println(s1.getName() + "..." + s1.getAge());
		System.out.println("--------------------");
		Son s2 = new Son("张三",23);
		System.out.println(s2.getName() + "..." + s2.getAge());
	}
}
/*
* A:案例演示
	* 父类没有无参构造方法,子类怎么办?
	* super解决
	* this解决
* B:注意事项
	* super(⋯)或者this(⋯.)必须出现在构造方法的第一条语句上
*/
class Father {
	private String name;			//姓名
	private int age;				//年龄

	public Father() {				//空参构造
		System.out.println("Father 空参构造");
	}

	public Father(String name,int age) {	//有参构造
		this.name = name;
		this.age = age;
		System.out.println("Father 有参构造");
	}

	public void setName(String name) {	//设置姓名
		this.name = name;
	}

	public String getName() {			//获取姓名
		return name;
	}

	public void setAge(int age) {		//设置年龄
		this.age = age;
	}

	public int getAge() {				//获取年龄
		return age;
	}
}

class Son extends Father {
	public Son() {						//空参构造
		this("王五",25);				//本类中的构造方法
		//super("李四",24);				//调用父类中的构造方法
		
		System.out.println("Son 空参构造");
	}

	public Son(String name,int age) {	//有参构造
		super(name,age);
		System.out.println("Son 有参构造");
	}
}

 

猜你喜欢

转载自qianjiangbing.iteye.com/blog/2292170