2018.9.17学习笔记(代码块,继承,super,final)
1 代码块
(1)局部代码块
当代码块执行结束,内存就释放了,作用不多。
(2)构造代码块
构造代码块直接在类中写,并且每创建一次对象就执行一次,而且优于构造函数执行。
(3)静态代码块
随着类的加载而加载,并且只执行一次。
2 继承
好处:继承提高了代码的复用性,提高了代码的维护性。让类与类之间产生了联系,继承是多态的前提。
弊端:增加了耦合性,但是开发原则是高内聚,低耦合。、
JAVA继承的特点:只支持单继承,不支持多继承,但是它支持多层继承,不能继承父类的构造方法。
3 super关键字
之前讲述过this代表的是当前的对象,super代表的是父类的对象。
4 继承时构造方法的问题
上面继承的特点解释到,子类不能继承父类的构造方法,但是它默认访问父类的空参构造,在子类的构造方法中会加上super()语句。
上图需要解释一下,父类Father中有空参构造和有参构造,子类Son中也有空参构造和有参构造,那么当创建Son对象时,默认会先执行父类的空参构造,注意这里是空参构造,无论子类是用空参构造还是有参构造。所以上图super(name,age)应该是super()。但是当父类没有空参构造的时候,在子类中为了不报错,就只能用父类的有参构造,所以需要写super(name,age)
5 继承面试题
(1)简单
主函数Test_Extends,执行第一句时,先访问父类的空参构造,输出“fu”,再输出“zi”,调用show()方法,输出30,20,10
(2)难
6 继承中的成员方法(方法重写)
7 final
string类就是final修饰的,所以它不能被继承。
final:最终的,不可修改的,常量要求所以字母大写。
final的一般用法:
当final修饰一个引用类型(比如Person p),那么p中存储的地址值就不能改变了。