2017年9月19日学习总结
一:继承的概念、特点及作用
1:所谓继承,朽木发新芽。新芽的养分来自于朽木,但新芽也会成长出自己独特的样子。通过生活中父辈与子辈的关系,我们不难理解类之间的关系:父类与子类。
继承即子类继承了父类的属性和方法,但子类自身又有另外的属于自己的属性和方法,此为继承。
基本格式:
【访问权限修饰符】【修饰符】子类名 extends 父类名{
类体;
}
需要注意的是,之前学习的关键字this表示调用本类(子类)的属性和方法,在继承者部分需要用到super这个关键字。
Super . 属性名/方法名();
用来调用父类的属性或者方法。
这里值得一提的是,程序加载的一般顺序:系统在加载程序的过程中是有一定顺序的,例如在加载一个类时,他会加载其属性和方法,同时会优先加载static区(静态存储区),这个时候我们可以通过类名去调用该区的相关属性和方法,随后在去完成构造方法(实例化对象)的过程。因此用this关键字的时候,该关键字语句必须写入非静态类中,因为实例化对象(创建对象)的过程是在加载完static区后才会执行的步骤。如果写在Static类中,程序将会报错。此时程序找不到对象。
Super关键字的用法:
Super . 属性名 :调用父类的属性
Super . 方法名() :调用父类的方法
尤其在构造方法这一块,若要调用父类的无参数的构造方法,即使父类没有该构造方法,也应该将默认的构造方法写出来,否则系统报错,默认无参的构造方法为
类名 () { }
而且程序加载的顺序是:先调用父类的无参构造方法,再执行子类的无参构造方法,有参数的构造方法亦是如此,即子类构造方法总是先调用父类的构造方法,这一点需要注意,在练习中加深理解。
二:属性与方法的覆盖
在子类继承父类方法的过程中,若父类与子类均含有同名的属性/方法,最终执行的会是子类的属性和方法,即属性/方法的覆盖,有final修饰符修饰的属性和方法除外。
同样地,在继承的过程中,若父类被final修饰,同样不可以子类继承,final关键字的含义可以与之前定义常亮时的意义对比理解。意思就是被final所修饰的类、属性或者方法,在程序后期执行的过程中一般不可,如果一定要用的话,可以通过本类的public方法来实现。