JAVA中this与super两个关键字的用法

来源:互联网 发布:qq for mac截图快捷键 编辑:程序博客网 时间:2024/05/21 22:52

讨论一下JAVA中this与super两个关键字的用法。
在Java中this通常指当前对象,super通常指父对象。如果想引用当前对象的某种东西,比如当前对象的成员属性或者方法,则可使用this来实现这个目的。this也可以用来调用当前对象的构造函数,通过参数来选择具体哪个构造函数。而super关键字与this使用方法类似,区别在于super指的是父对象。下面来演示具体用法:

this用法

1.this调用当前对象成员属性

public class Person {    private String name;    private String age;    Person(String name,String age){        this.name = name;        this.age = age;        prt();//this.prt();    }    protected void prt(){        System.out.println("this person's name is "+name+",age is "+age);    }    public static void main(String[] args){        new Person("tom","11");    }}

2.this调用当前对象方法

public class Person {    private String name;    private String age;    Person(String name,String age){        setName(name);//this.setName(name);        setAge(age);//this.setAge(age);        prt();//this.prt();    }    protected void setName(String name){        this.name = name;    }    protected void setAge(String age){        this.age = age;    }    protected void prt(){        System.out.println("this person's name is "+name+",age is "+age);    }    public static void main(String[] args){        new Person("tom","11");    }}

上面使用this调用了当前对象的方法,同时省略this。

3.this调用当前对象的构造函数

public class Person {    private String name;    private String age;    private String weight;    Person(){        this.weight = "75";    }    Person(String name,String age){        this();//调用无参构造函数        setName(name);//this.setName(name);        setAge(age);//this.setAge(age);        prt();//this.prt();    }    protected void setName(String name){        this.name = name;    }    protected void setAge(String age){        this.age = age;    }    protected void prt(){        System.out.println("this person's name is "+name+",age is "+age);        System.out.println("weight is "+weight);    }    public static void main(String[] args){        new Person("tom","11");    }}

super的用法

1.super调用父类方法

public class Student extends Person{    public void prt(){        super.prt();//调用父类方法        System.out.println("is a student");    }    public static void main(String[]args){        Student s = new Student();        s.setName("tom");        s.setAge("11");        s.prt();    }}

2.super调用父类构造函数
person:

public class Person {    Person(){        System.out.println("person()");    }    Person(String name){        System.out.println("person(String name)");    }}

student:

public class Student extends Person{    Student(){        super();//父类无参构造函数    }    Student(String name){        super(name);//父类有参构造函数        System.out.println("name is "+name);    }    public static void main(String[]args){        new Student();        new Student("tom");    }}
0 0
原创粉丝点击