super
【介绍】
super代表父类的引用,用于访问父类的属性、方法、构造器
【作用及语法】
-
访问父类的属性,但不能访问父类的private属性。-----super.属性名;
-
访问父类的方法,不能访问父类的private方法。--------super.方法名(参数列表);
假如B类继承于A类,A类有有一个公共的方法cal(),而B类没有这个同名方法,那么通过B类的某个对象可以有三个方法访问这个方法:
(1)cal(); //由于本类没有这个同名方法,则往父类找这个方法
(2)this.cal();//基本同cal();
(3)super.cal();//super直接跳过本类,往上面的父类找,直到Object类 -
访问父类的构造器:super(参数列表);只能用于子类构造器中的第一句语句,而且只能出现一次。
-
super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类中都有同名的成员,使用super访问遵循就近原则和访问权限的相关规则。
【super与this的区别】
相同的地方:
-
它们都是用来访问类中的属性、方法和构造器
-
虽然this是从本类开始找,而super从父类开始找,但是它们若在开始的类中找不到,都会循着继承关系往上级父类继续查找,直到找到第一个同名属性方法或构造器,若它可以访问,则访问;若不可以则报错。或继续找直到Object类。