面向对象—继承

2023-12-14 16:30:18

一.继承基本属性

class? 子类? extends 父类{? ?}

1.子类就会自动拥有父类定义的属性方法

2.父类又叫超类,基类

3.子类又叫派生类

二.细节

1.子类继承了所有的属性和方法,但是私有属性不能放在子类中直接访问,要通过公有的方法去访问。

2.子类必须调用父类的构造器,完成父类的初始化

3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类哪个构造器完成对父类的初始化工作,否则,编译不会通过。

4.如果希望指定去调用父类的某个构造器,则显式的调用一下

5.super在使用时,需要放在构造器第一行

6.super()和this()都只能放在构造器第一行,因此这两个方法不能共存在一个构造器中。

7.Java所有类都是object的子类

8.父类构造器的调用不限于直接父类,将一直追溯到object类(顶级父类)

9.子类最多只能继承一个父类(直接继承),即Java中是单继承机制

10.不能滥用继承,子类和父类必须满足is-a的关系

三.super关键字

1.基本介绍

super代表父类的引用,用于访问父类的属性、方法、构造器

2.基本语法

1.访问父类的属性,但不能访问父类的private属性

super.属性名;

2.访问父类的方法,不能访问父类的private方法

super.方法名(参数列表);

3.访问父类的构造器

super(参数列表);只能放在构造器的第一句,只能出现一句

3.super好处

1.父类属性由父类初始化,子类的属性由子类初始化

2.当子类中有和父类中的成员(属性或方法)重名时,为了访问父类的成员,必须通过super,如果没有重名,使用super,this,直接访问是一样的效果。

3.super访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类(上级类)中都有同名的成员,使用super遵循就近原则

4.super与this的比较

区别点thissuper
1访问属性访问本类中的属性,如果本类中没有此属性,则从父类中继续查找从父类开始查找的属性
2调用方法访问本类中的方法,如果本类中没有此方法,则从父类中继续查找直接访问父类中的方法
3调用构造器调用本类构造器,必须放在构造器的首行调用父类构造器,必须放在子类构造器的首行
4特殊表示当前对象子类中访问父类对象

四.方法重写(override)

1.注意事项和使用细节

1.子类的方法的形参列表,方法名称,要和父类方法中的参数,方法名称完全一样

2.子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类

? 比如,父类返回类型是object,子类方法返回类型是String

3.子类方法不能缩小父类方法的访问权限

2.方法重载和方法重写的比较

名称发生范围方法名形参列表返回类型修饰符
重载(overload)本类必须一样类型,个数或者顺序至少有一个不同无要求无要求
重写(override)父子类必须一样相同子类重写的方法,返回类型需要和父类返回类型相同或者是其子类子类方法不能缩小父类方法的访问范围

文章来源:https://blog.csdn.net/m0_75277376/article/details/132741706
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。