对于java的继承,super,this的用法?

首先需要掌握的是了解java中通过extends 继承一个父类。
在继承后,子类可以调用访问父类中所有的public,protected方法及成员变量。在调用时可以显式使用super表示父类。例如父类 A 中有:
方法 M();
成员变量 V;
在子类访问时可以写成super.M(),或者 super.V

据了解,java是有子类优先的规则,所以当父类与子类有同名方法或成员变量被调用,当没有显式使用super时,会优先调用子类的方法或成员变量。而如果调用的方法或成员变量在子类没有,那么会在父类中寻找,这时不用super也会在父类自动寻找调用。
因此,总而言之,在子类中调用父类中同名方法或有与父类中同名的成员变量(public protected)时,如果需要调用父类中的这一方法或成员变量,就必须显式写出super,否则可以省略。

第二种情况是调用父类构造方法,在子类构造方法java会默认隐式调用了super(),即父类的构造方法,其实仔细想想也可以直到,继承其实就是在原有类上扩写或者改写,所以肯定需要先构造原类作为基础模板。
这时假设父类中的构造方法必须含有参数,不存在无参的构造方法,这时在子类的构造方法中就必须显式写出super(String[] args),否则会出错。当然这也很符合逻辑,因为假设父类构造不成功,那谈什么子类能继承呢。

super的用法与this的用法恰好相对,this是针对自己本身进行调用,如访问自己成员变量,调用自己的成员方法(如果是继承,在子类找不到时也会去父类找),调用自己的构造方法。主要在需要区分的时候才使用,比较基础就不多赘述。