super关键字

写这个是为了加深我的印象,我老是忘记super关键字的作用,想必是用得太少了,故此加强一下。

  

abstract class BaseException extends RuntimeException {
    private final ErrorCode errorCode;
    private final transient HashMap<String, Object> data = new HashMap<>();

    BaseException(ErrorCode errorCode, Map<String, Object> data) {
        super(errorCode.getMessage());
        this.errorCode = errorCode;
        if (!ObjectUtils.isEmpty(data)) {
            this.data.putAll(data);
        }
    }

  其实 super 也就是对父类对象的一个引用,此处是调用父类对应参数类型的构造方法。当然也可以用过 super 来访问父类的成员变量,通过super.的方式。

  • super在大多数情况下是可以省略的,除非你想调用的父类的方法或变量子类的方法或变量的名字相同那就必须使用super关键字量说明。
  • 子类的构造方法会默认携带一个super来调用父类的无参构造器。
  • 当你在一个构造方法中分别使用了super和this来引用构造方法时这是行不通的,因为两者都想要在方法的第一行中被执行。

 

 

 

posted @ 2023-04-06 11:44  嘿咻噜啦啦  阅读(30)  评论(0)    收藏  举报