一、super的作用
1.第一种用途
- 在构造方法中显示的调用super,来初始化父类的对象;
- 如果没有super则使用默认的super();
- 默认的super()将会自动调用父类的无参构造方法。
2.第二种用途
- 如果父类和子类有同名的成员,那么子类会默认访问属于自己的成员;
- 显示的调用父类中的成员;
- 父类中的成员修饰private时,子类不能直接访问父类中的方法,但是可以在公有的方法;
- 里面去调用私有的方法。
二、super的特点
1.super只能在构造方法中使用;
2.super必须放在子类构造方法中的第一句,仅且调用一次;
3.static当中不能有super,即static生命周期来看;
4.若父类的对象无法创建,那么子类也无法实例化。
三、为什么会有继承
答:如果没有继承的话,有些代码就会存在冗余,不便于程序的维护和扩充新类,
这从实际的开发角度上来看,这种实现肯定是不好的。
四、关于extends关键字
称为扩展,子类扩展一个类,子类有时候也称为派生类
五、父类与子类的关系
1.子类可以有自己定义的操作
2.也可以从父类中继承过来的操作
六、 继承的限制
1.Java只允许单继承,不允许多重继承,即一个子类只能继承一个父类
2.但是Java允许多层继承,即一个子类有一个父类,一个父类还可以有一个父类
七、继承的访问限制
1.在继承当中应注意的是, 子类不能直接访问父类中的私有成员, 但是可以间接地通过调用父类中的非私有成员来访问
八、继承中,子类实例化对象过程
1.在继承操作中,子类在实例化对象之前会首先调用父类中的无参构造方法,然后再调用子类自己的构造方法;
2.此时,在子类的构造方法中,隐藏了一个super关键字,有时父类也称为超类;
3.子类对象的实例化过程:先调用父类的构造方法,再调用子类的自己构造方法。
九、私有化继承
私有化中的方法可以被继承,但是看不见。当父类中的成员被修饰为private时,子类不能直接去访问父类的方法,但是可以间接地去访问父类中公有方法中的私有方法
十、继承的作用
- 解决了代码的重用问题
- 实现了递增式的程序设计
- 继承能够在某些比较一般的类的基础上建造、建立和扩充新类
- 能减少代码和数据的冗余度,并通过增强一致性来减少模块间的接口和界面,
- 从而增强了对象的可维护性
- 能清晰地体现出类与类之间的层次结构关系
十一、继承的注意事项
1.继承是单方向,即子类可以访问父类中的成员,反之不行
2.继承只能是单一继承方式,且一个子类只能继承一个父类
3.一个子类只能继承一个父类,但是允许进行多层继承
★如果一个类没有使用extends关键字继承任何类,那么这个类一定继承java.lang.Object
在Java中,任何类追溯至最上层父类,一定是java.lang.Object
十二、继承总结
1.继承的主要目的:扩展类的功能
2.Java中一个子类只能继承一个父类
3.Java中不允许多重继承,但是允许多层继承
十三、类中个部分初始化顺序
1.静态
- 按照顺序被初始化(属性、方法、块)
2.普通
- 顺序被初始化
- 构造方法
3.继承关系的类当中
静态成员
- 最顶层父类的静态成员被初始化,然后才是子类的静态方法被初始化静态成员
非静态成员
- 先初始化父类的成员,最后初始化构造方法
- 初始化子类的成员,最后初始化子类的构造方法
十四、实例要求
定义一个整型数组类,要求包含构造方法,增加数据及输出数据成员方法,利用数组实现动态内存分配。在此基础上定义出以下子类:
1.A、 排序类 ----> 实现排序
2.B、 反转类 ----> 实现数据反向存放