this,super&final关键字说明

一、this:
1、只能用在一个类的方法和构造方法中,表示调用当前方法的对象

public class AA {
    String name = "张三";
    public void study(String name){
        System.out.println(this.name + "在学习");
    }
    public static void main(String[] args) {
        AA aa = new AA();
        //输出的结果是“张三在学习”,因为this.name调用的是成员变量name=“张三”
        aa.study("李四");
    }
}

2、this()表示当前类的构造方法,具体是哪一个构造方法由参数决定,并且只能在某一个构造方法中的第一行代码出现

public class AA {
    public AA() {
        System.out.println("构造方法一");
    }
    public AA(String name) {
        //调用构造方法一
        this();
        System.out.println(name + "构造方法二");
    }
    public static void main(String[] args) {
        AA aa = new AA("张三");
    }
}

输出结果:构造方法一
张三构造方法二

二、super
1)用在有继承关系的时候,在子类中调用父类的方法,代表的是父类的对象

2)在子类的构造方法中,必须要调用父类的某一个构造方法:
a、在子类默认的无参构造方法中,会默认调用父类的父类构造方法,super(),在父类的没有无参构造方法时,只能调用某个有参的构造方法,就是在子类中写一个构造方法(有参无参都可以),调用父类某个有参的构造方法

//父类中含有一个带参的构造方法
public class AA {
    public AA(String name){
        System.out.println(name + "父类有参的构造方法");
    }
}
//子类必须写一个构造方法,调用父类中某个带参的构造方法
public class BB extends AA {
    public BB () {
        //调用的是父类某个带参的构造方法
        super("张三");
    }
    public static void main(String[] args) {
        //调用的是父类的构造方法
        BB bb = new BB();
    }
}

三、final
1)final修饰类,表示该类不可以被继承,因此接口和抽象类不能写成final,因为接口和抽象类就是用来继承的

2)final修饰变量,叫常量,变成必须初始化(要在构造方法之前初始化也可以在构造方法的时候初始化),只能初始化一次并且不能被修改,final修饰参数变量,表示参数变量不能被修改,穿什么值就是什么值

3)final修饰方法,表示该方法不能被重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值