您的位置:首页 > 编程语言 > Java开发

Java 中的super和this区分

2016-05-12 15:42 513 查看
super:可以理解为是指向父类对象的一个指针,可以用super调用父类的方法,也可以用super调用父类的构造函数,super也可以带参数传给父类的构造函数。需要注意的是super需要放在方法的最前面。

1.调用父类的构造器

class Game{
Game(int i){
//print("Game constructor");
System.out.println("Game constructor");
}
}

class BoardGame extends Game{
BoardGame(int i){
super(i);
System.out.println("BoardGame constructor");
}
}
public class Chess extends BoardGame {
Chess(){
super(11);
System.out.println("Chess Constructor");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chess x=new Chess();
}

}


2.调用父类的方法:

依旧是前面的例子,加入方法调用。

class Game{
Game(int i){
System.out.printf("%d",i);
System.out.println("Game constructor");
}
public void type(String s){
System.out.printf("the game is:%s",s);
}
}

class BoardGame extends Game{
BoardGame(int i){
super(i);
super.type("grad style!");
System.out.printf("%d",i);
System.out.println("BoardGame constructor");
}
public void type(){
System.out.println("the game is interesting");
}
}
public class Chess extends BoardGame {
Chess(){
super(11);
super.type();
super.type("it is Chess game");
System.out.println("Chess Constructor");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chess x=new Chess();
}

}


this:是对象本身,可以理解为指向当前对象本身:

1.当形参和成员变量重名,需要用this来区分,这也是调用类中私有变量的方法

public class Person {

private String name;
private int age;
Person(String name,int age){
setName(name);
setAge(age);
}
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public void print(){
System.out.printf("the man name is:%s,age is:%d",name,age);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Person man1=new Person("xiaoming",20);
man1.print();
}
}


2. 调用本类构造函数

public class EatApple {
int num=0;
EatApple addone(){
num++;
return this;
}
public void printResult(){
System.out.printf("the num of the man eat is:%d",num);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EatApple man=new EatApple();
man.addone().addone().addone().addone().printResult();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java super this