接口、继承、多态
继承和多态是面向对象开发语言中非常重要的饿一个环节,如果在程序中使用继承和多态得当,整个程序的架构将变得非常有弹性,通知书可以减少代码的冗余性。 继承机制的使用可以复用一些定义好的类,减少重复代码的编写。多态机制的使用可以动态调整对象的调用,降低对象之间的依存关系。
1.继承机制中子类的结构化过程
- 子类的所构造函数,默认都会访问谷类中控参数的构造函数;因为,子类每一个构造行数内的第一行都由依据隐式的super();
-
子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,所以子类在对象初始化时,要先访问一下父类中的构造函数。
- 如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。
当然:
子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数,子类中至少会有一个构造函数会访问父类中的构造函数。
class Zi extends Fu{ Zi() { super(); //隐式添加 System.out.println("zi run"); } Zi(int x) { this(); System.out.println("zi..."+x); }}
2、函数的覆盖、重写
重写:
- 当子类出现和父类一模一样的函数时,
- 当子类对象调用该函数,会运行子类函数的内容。
覆盖:
- 子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
- 静态只能覆盖静态。
3、多态
多态前提:
- 必须是类与类之间有关系,要么继承,要么实现
- 存在覆盖
4、final关键字
- 可以修饰类,函数,变量。
- 被final修饰的类不可以被继承。为了避免被继承,被子类复写功能。
- 被final修饰的方法不可以被复写。
- 被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,有可以修饰局部变量。
当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字。方便于阅读。
而这个值不需要改变,所以加上final修饰。作为常量:常量的书写规范所有字母都大写,如果由多个单词组成;单词间通过_连接。- 内部类定义在类中的局部位置上是,只能访问该局部被final修饰的局部变量。