您的位置:首页 > 其它

this和super关键字的用法

2014-06-01 14:32 267 查看
this关键字的用法

1. this在类的内部代表对象本身:

this就代表这个类的对象,比如

public class A {

private String name;

public void setName(String name) {

//this就代表A的一个对象

//当你实例一个A时,A a1 = new A();this就是那个a1,只是this在内部用,而a1在外部用

//A a2 = new A()同理,这时在a2的内部,this就代表a2

this.name = name;

}

}

2.this的第二种用法,是用在构造函数里的

当在构造器里要调用自己的其他构造器时,就用this

this必须放在第一行

public class A {

private String name;

public A() {

this("no name");

}

public A(String name) {

this.name = name;

//other codes

}

}

Super关键字的用法

1.显式的调用父类的方法

当从一个类继承时,子类和父类都有一个同名方法,也就是子类覆盖了父类的方法,可是又想调用父类的方法,那么就要用super,像继承swing的类时就有个好例子

public class MyPanel extends JPanel {

@Override

public void paint(Graphics g) {

super.paint(g);//如果不用super,那么就会调用自己的paint方法

}

}

2. 用在构造器中和this的用法一样,super也可以用在构造器,this是调用自己的其他构造器,那么super当然就是调用父类的构造器了

-------------------------------------------------------

super和this用在构造器的话,前者表示调用父类的够早器,后者表示调用本类的其他构造器,他们两个都必须是写在构造器里的第一行

public class Person {

private String name;

private int age;

public Person() {

name = "";

age = 0;

}

public Person(String n, int a) {

name = n;

age = a;

}

}

public class Student extends Person {

private String id;//学号

public Student(String name, int age) {

super(name, age);//必须写在第一行,子类无法直接访问父类的私有属性,所以通过调用父类的构造器类初始化属性

}

public Student(String id, String name, int age) {

this(name, age);//因为本类已经有个构造器初始化name和age了,所以交给他来做就行了,也必须写在第一行

this.id = id;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: