我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。
前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。
1.继承
通俗的来说就是子类继承父类的属性和行为,用关键字extends关键字来继承关系,在这里会有this关键字和super关键字的使用。
对于成员变量的继承来说,如果是子类继承父类的不同名变量是相互不影响的,但是如果是同名的变量则this.变量名,是指调用子类(本类的成员变量)如果是super.变量名,是指调用父类的成员变量(继承并且同名的)
相同的对于成员方法来说,如果是子类继承父类的不同名的成员方法的调用是互不影响的,但是如果说是同名的成员方法这里就要说是有影响的,并且这里会出现之前提到过的overriding(重写,方法的重载和重写区别面试也会问到的)这里的重写必须要子类出现的方法与父类出现的方法完全一致。
关于覆盖重写这里要说明两点注意事项:
1.方法重写子类的权限必须要大于等于父类的权限;
2.方法覆盖重写子类的返回值,函数名,参数列表也要一模一样。
继承关系这里要说的是一个子类只可以继承一个父类,但是个多阶继承。
这里的super和this 又有了一个子父类空间优先级的问题,是父类空间优先于子类产生。
和上文的成员变量成员方法一样,调用父类就super调用子类就this。
但是关于继承子类是无法继承父类的构造方法的因为构造方法的名称必须与类名相同,但是为了初始化成员变量子类的构造方法中会默认有一个super();表示调用父类的构造方法。
还有一点是子父类的关系是相对的不是绝对的。可以有多个子类继承一个父类,但是一个子类不能继承多个父类。
2.抽象
关于抽象的理解,我一直不明白这是一个什么的概念存在,像继承是为了之后的多态做一个铺垫,那么抽象呢?我看到最浅显易懂的意思就是,在某些特别的领域为了防止在该类下创建对象,有了这个抽象类,用后面的实体类来实例化操作这个类的内容。这里的关键字是abstrcat,抽象类中没有方法体,是包含抽象方法的类,叫做抽象类,如果有实现类的话,必须覆盖重写所有的抽象方法,不然就会报错,除非子类也是抽象类,那么抽象类的意义到底是什么呢?https://www.cnblogs.com/heyonggang/p/3142338.html这里的作者用生活常识去描述了一下抽象类的怎么去思考,文字太多,作者不易这里就放下地址了。