this是带表本类对象的引用,而super是带表夫类的,当你要调用父类的成员的时候就用super关键字!
比如:
class Person
{
String name;
String age;
void sleep()
{
System.out.println("人睡觉");
}
}
class Studengt extends Person
{
void sleep()
{
super.sleep();//这个时候就是引用的父类对象掉用他的sleep方法。
System.out.println("学生睡觉");
}
}作者: 付信榕 时间: 2012-5-26 14:29
使用super&this调用成员变量和方法可以使用super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。见示例1。
当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。见示例2。
示例1class Person {
protected void print()
{ System.out.println("The print() in class Person."); }
public class DemoSuper extends Person
{ public void print() { System.out.println("The print() in class DemoSuper."); super.print();// 调用父类的方法 }
public static void main(String[] args) { DemoSuper ds = new DemoSuper(); ds.print(); }
}
结果:The print() in class DemoSuper.The print() in class Person.
示例2
public class DemoThis { private String name;
public void setName(String name)
{ this.name = name;// 前一个name是private name;后一个name是setName中的参数。 }}
示例4
class Person {
public static void prt(String s) { System.out.println(s); }
Person() { prt("A Person."); }
Person(String name) { prt("A person name is:" + name); }}
public class Chinese extends Person { Chinese() { super();// 调用父类构造函数。 prt("A chinese."); }
Chinese(String name) { super(name);// 调用父类具有相同形参的构造函数。 prt("his name is:" + name); }
public static void main(String[] args) { Chinese cn = new Chinese(); cn = new Chinese("kevin"); }
}
结果:A Person.A chinese.A person name is:kevinhis name is:kevin