使用super关键字可以从子类中调用父类中的构造方法、普通方法和属性

与this调用构造方法的要求一样,语句必须放在子类构造方法的首行

this和super都可以调用构造方法,但是两者不能同时出现,调用构造的时候都必须放在构造方法的首行

//=================================================
// File Name       :	extends_demo
//------------------------------------------------------------------------------
// Author          :	Common


// 类名:person
// 属性:
// 方法:
class person{
	private String name;
	private int age;
	
	public person(String name,int age){	//构造方法
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	//方法:print
//	void print(){	//定义一个默认访问权限的方法
//		System.out.println("Person---->void print()");
//	}
	
	//方法:getInfo()
	public String getInfo(){
		return "姓名"+this.name+"年龄"+this.age;
	}
}

//类名:student
//属性:
//方法:
class student extends person{

	private String school;		//新定义的属性school
	
	public student(String name, int age,String school) {
		super(name, age);		//指定调用父类中的构造方法
		this.school = school;		
		// TODO 自动生成的构造函数存根
	}
	
	public String getSchool() {
		return school;
	}

	public void setSchool(String school) {
		this.school = school;
	}
	
	//方法:print
//	public void print(){	//覆写父类中的方法,扩大了权限
//		super.print();			//调用父类中的print()方法
//		System.out.println("student---->void print()");
//	}
	
	//方法:getInfo	
	public String getInfo(){											//覆写父类中的方法
		return super.getInfo()+"学校"+this.school;		//扩充父类中的方法
	}
}


public class extends_demo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		student person_1 = new student("李四",18,"清华大学");
//		person_1.setName("张三");
//		person_1.setAge(10);
//		person_1.setSchool("涵三中");
//		System.out.println("姓名:"+person_1.getName()+"\n"+"年龄:"+person_1.getAge()+"\n"+"学校:"+person_1.getSchool());
//		new student("张三",11,"三中").print();
		System.out.println(person_1.getInfo());		//打印信息,调用覆写过的方法
		person person_2 = new person("张三",18);
		System.out.println(person_2.getInfo());
	}

}

 

this和super的区别

区别        this                         super

1.属性访问    访问本类中的属性,如果本类中没有此属性      访问父类中的属性

         ,则从父类中继续查找

2.方法      访问本类中的方法,如果本类中没有此方法     直接访问父类中的方法

         ,则从父类中继续查找

3.调用构造    调用本类构造,必须放在构造方法的首行      调用父类构造,必须放在子类构造方法的首行

4.特殊      表示当前对象                  无此概念