这是我暑期自学Java的第十六课,本节课主要学习了抽象类和抽象方法。相比之前的内容,这一节更偏向理解思想,没有复杂的代码,但有不少新的规则需要记住,让我对面向对象的继承有了更深的认识。
通过学习我了解到,被abstract修饰的方法就是抽象方法,这种方法只需要定义方法名,不用写具体的代码实现。只要一个类里面有抽象方法,这个类就必须是抽象类。抽象类和普通类最大的区别就是,它不能直接创建对象,只能用来被其他子类继承,相当于一个“模板父类”。
我学到最重要的一条规则是:子类继承抽象类之后,必须把父类所有的抽象方法全部补全、重写出来。如果自己不想重写,那这个子类也只能变成抽象类。除此之外,抽象类并不是全部都是抽象内容,里面也可以有普通方法、成员变量和构造方法,用来给子类初始化使用,并不是完全空洞的类。
学习过程中我也踩了不少小坑。刚开始我习惯性想直接new一个抽象类对象,结果一直报错,慢慢记住了抽象类只能被继承、不能直接使用。另外我也容易混淆关键字,知道了abstract不能和final、private一起用,因为抽象方法就是留给子类重写的,一旦被锁定或私有,就失去了意义。
通过这节课的学习,我明白了抽象类的作用。它主要是帮我们提取多个子类的共同特征,统一规范方法名字,让所有子类按照统一的标准去实现功能,避免代码写法混乱,让整体结构更整齐规范。
总的来说,这节课难度不算大,更多是理解概念和记规则。抽象类就是用来做模板、定标准的,让子类统一规范、各司其职。之后我会多写几个简单案例巩固理解,为接下来学习接口内容打好基础。