小白学java第15天
super:代表父类的引用,用于访问父类的属性、方法、构造器
注意:
1.访问父类的属性,但不能访问父类的private属性 格式:super.属性名
2.访问父类的方法,但不能访问父类的private方法 格式:super.方法名()
3.访问父类的构造器 只能放在构造起的第一句,只能出现一句 super(参数列表)
优点:
1.调用父类构造器的好处分工明确
2.当子类中有和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super。如果没有重名,使用super、this、直接访问一样
3.super的访问不限于直接父类,如果爷爷类和本类都有同名的成员,也可以使用super去访问爷爷类的成员,如果多个基类(上级类)中都有同名的成员,可以使用super访问遵循就近原则
super和this的区别:
区别 | this | super | |
1 | 访问属性 | 访问本类的属性,如果没有则从父类继续查找 | 从父类开始查找属性 |
2 | 调用方法 | 访问本类的方法,如果没有则从父类继续查找 | 从父类开始查找方法 |
3 | 调用构造器 | 调用本类构造器,必须放在构造器的首行 | 调用父类构造器,必须放在子类构造器的首行 |
4 | 特殊 | 表示当前对象 | 子类中访问父类对象 |
方法重写/覆盖:子类有一个方法和父类的一个方法的名称、返回类型、参数完全一样,那么我们就说子类的这个方法覆盖了父类的方法
注意:
1.子类的方法的参数,方法名称要和父类的参数,方法名称完全一样
2.子类方法的返回类型和父类返回类型一样,或者是父类的返回类型的子类。例如:父类是object,子类是string
3.子类方法不能缩小父类方法的访问权限。public>protected>默认>private
复习:
名称 | 发生范围 | 方法名 | 参数列表 | 返回类型 | 修饰符 |
重载 | 本类 | 必须一样 | 类型、个数、顺序至少一个不同 | 无要求 | 无要求 |
重写 | 父子类 | 必须一样 | 相同 | 子类重写的方法返回的类型和父类返回的类型一致,或者是其子类 | 子类方法不能缩小父类方法的返回范围 |