super和this关键字的区别

package M6super关键字;

/*
 * super和this关键字都可以用来覆盖Java语言的默认作用域,使被屏蔽的方法或变量可见。
 * 
 * 注:
 * 1、super和this关键字只能在实例方法或构造方法中使用,但不能在静态方法中使用。故也不能再main方法中使用
 * 2、super是指当前父类对象的内存地址
 * 
 * super关键字使用情况:
 * 1、类的构造方法中,通过super语句调用父类的构造方法
 * 2、在子类中访问父类被屏蔽的方法和属性。
 * 
 * super和this关键字的区别:
 * 1、super:调用基类中的某一个构造方法(应为构造方法的首行)
 * 	  this:调用本类中另一种形式的构造方法(应为构造方法的首行)
 * 2、super:引用当前对象的直接父类中的成员(用来访问父类中被隐藏的成员变量或成员方法)
 *    this:引用本类中的成员变量或成员方法。
 * 3、super和this不能出现在一个构造函数里。
 * 4、super和this均不能再static环境中使用。
 * 
 * */

class Base {
	public Base() {
		System.out.println("父类的构造方法");
	}
	public void method() {
		System.out.println("父方法!");
	}
}

public class Sub extends Base {
	public Sub() {
		super();	//调用父类的构造方法,一定要放在方法的首句。
		System.out.println("子类的构造方法");
	}
	public void method() {
		System.out.println("子方法");
	}
	
	public void test() {
		super.method();//调用父类的method方法
		this.method();//调用Sub实例的method方法
	}
	
	public static void main(String[] args) {
		Sub s = new Sub();
		//s.method();
		s.test();
	}
}


你可能感兴趣的:(super和this关键字的区别)