Java中的关键字Super和This的用法

this关键字
1.”this.(方法名,属性名)”表示引用当前对象的方法或属性。
(1).给属性赋初始值时,一般要用this.xxx=xxx;
(2).当方法内部定义的局部变量与成员变量重名时,如果要调用成员变量应当使用this.xxx。如果没有重名,this可以省略。
(3)。可以使用this.(方法名)调用当前对象的方法,可以省略。
2.”this(参数)”表示调用本类的其它构造方法,根据所传参数来决定要调用那种构造器。只能出现在构造方法的第一行。

package TestSuperAndThis;

public class Pet {
    public String name;//宠物名字
    public int age;//宠物年龄
    public double weight;//宠物体重

    public Pet() {
        super();
        System.out.println("这是pet的空构造器");
    }

    public Pet(String name,int age,double weight) {
        this();//调用pet的空构造器
        this.name = name;
        this.age = age;
        this.weight = weight;
        System.out.println("这是pet含有name,age,weight的构造器");
    }
    public void show() {
        System.out.println("我是"+name+" 已经"+age+"岁了"+"我的体重为"+weight);
    }
    public void eat() {
        this.show();//调用show方法,this可省略。
        System.out.println("吃吃吃");
    }

    public static void main(String[] args) {
        Pet pet=new Pet("小猫",3,5)       
        pet.eat();
    }

}

super关键字要在子类中使用
1.super.xxx用在子类中,表示调用父类同名的方法或属性。
2.super(有参数或无参数),表示调用此类中的父类构造方法,只能出现在构造方法的第一行。

*应注意的是:在同一个构造方法中,this(有参数或无参数)和super(有参数或无参数)只能出现一个。任何子类构造方法的第一行一定是super(有参数或无参数)或this(有参数或无参数)这样的调用,如果没有显性写出来,则系统会默认添加super()的调用,表示调用父类中无参的构造方法。

package TestSuperAndThis;

public class Dog extends Pet {
    public double run;//子类Dog的属性
    public Dog() {
        super();
        System.out.println("这是子类的空构造器");
    }
    public Dog(String name,int age,double weight,double run) {
        super(name,age,weight);//调用父类的非空构造器
        this.run=run;
        System.out.println("这是子类含有name,age,weight,run的构造器");
    }
    @Override//注解,用来确定重写父类的方法是否重写成功
    public void eat() {
        this.show();
        super.eat();//调用父类的eat方法
        System.out.println("我爱吃骨头");
    }
    public static void main(String[] args) {
        Dog dog=new Dog("小泰迪",3,20,20);
        dog.eat();

    }

}

*从以上两端代码可以看出,在调用构造器时,一定会先调用其父类的构造器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值