Java->this、super关键字

this关键字表示调用当前对象的什么什么;
super关键字表示调用父类的什么什么;

1、this调用属性:

//this关键字表示当前对象的什么什么
public class Test02 {
    public static void main(String[] args) {
        Student student = new Student("小七");
        System.out.println(student.getName());
    }
}

class Student{
    private String name;

    public Student(String name){
        //此处this表示当前对象定义的name属性值,而非构造器中形参的name
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }
}

输出结果
小七

2、this调用构造器:

注意:构造器可以使用this关键字显示的调用本类中其他的构造器;且“this(参数列表)”必须放在首行;

//this关键字表示当前对象的什么什么
public class Test02 {
    public static void main(String[] args) {
        Student student = new Student(18L,"小七");
        System.out.println(student);
    }
}

class Student{

    private Long id;
    private String name;

    public Student(){
        System.out.println("难道只有我是空参的构造方法吗?");
    }

    public Student(Long id) {
        this();//调用空参的构造方法
        System.out.println("输出的id值为:" + id);
        this.id = id;
    }

    public Student(Long id, String name) {
        this(id);//调用参数为id的构造方法
        this.id = id;
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

输出结果为:
难道只有我是空参的构造方法吗?
输出的id值为:18
Student{id=18, name=‘小七’}

3、super调用父类的构造器、方法、属性:

public class Test03 {
    public static void main(String[] args) {
        Son son = new Son();
        son.test();
    }
}

class Son extends Person{

    private String userName;
    private String pwd;

    public Son() {
        //在本类中调用父类的构造器,按照参数列表调用父类构造器
        super("父类:李四","父类:密码");
        this.userName = "本类:张三";
        this.pwd = "本类:密码";
    }

    public void test(){
        //调用本类method方法
        this.method();
        //调用父类method方法
        super.method();
        //调用本类userName属性
        System.out.println("本类中的userName=" + this.userName);
        //调用父类userName属性
        System.out.println("父类中的userName=" + super.userName);
    }

    public void method(){
        System.out.println("本类->方法");
    }

    @Override
    public String toString() {
        return "Son{" +
                "userName='" + userName + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

class Person{
    String userName;
    String pwd;

    public Person(String userName, String pwd) {
        this.userName = userName;
        this.pwd = pwd;
    }

    public void method(){
        System.out.println("父类->方法");
    }

    @Override
    public String toString() {
        return "Person{" +
                "userName='" + userName + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

输出结果:
本类->方法
父类->方法
本类中的userName=本类:张三
父类中的userName=父类:李四

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值