对这块概念比较模糊,求解答

问题遇到的现象和发生背景

想问一下,构造器里面有String msg
然后下面调用父类的方法为什么又有一个msg,没太看明白,求解答。

问题相关代码,请勿粘贴截图

public class AgeExpection extends RuntimeException {
public AgeExpection(String msg) {
super(msg);
}
}

我想要达到的结果

希望有人能帮忙解释清楚一下

String msg是AgeExpection 类的有参构造函数的形参
super(msg);是一个函数调用,把msg当做实参传递给super执行
super是父类的实例,就类似this指向自身类的实例
那么super()就是父类的构造函数

public AgeExpection(String msg) {
这里的msg是函数参数定义,注意,这里是函数定义!!
super(msg); 这是调用基类构造函数,同时将参数msg传递给基类构造函数,注意,这里是函数调用!!!
AgeExpection是RuntimeException 类的子类,其构造函数要求传递一个String类型的参数msg,实际上基类也有相同的构造函数,所以子类直接把外部传递给它的参数msg传递给了基类构造函数,实现对象构造

RuntimeException 里面也有一个构造函数 这并不冲突吧

就是在抛出AgeException时,因为传参数到了父类 RuntimeException一个有String参数的构造器中,所以可以打印异常信息时,会把msg字符串的信息打印出来。测试代码如下:


public class AgeException extends RuntimeException {

    
    
    public AgeException (String msg) {
        super(msg);
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student s = new Student(121);
        
    }

    
}

class Student{
    
    int age;
    
    public Student(int age) {
        
        if(age>120) {
            throw new AgeException("年龄不能超过120岁!");
        }else {
            this.age = age;
        }
        
    }
    
    
    
}

img