封装:
作用:隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:将变化隔离、便于使用、提高重用性、提高安全性
原则:将不需要对外提供的内容都隐藏起来。
把属性都隐藏提供公共方法对其访问。
继承:
好处:提高代码复用性
让类与类之间产生关系,给多态提供前提
弊端:打破了封装性
覆盖:
*主意事项:
1、子类覆盖父类方法时,子类权限必须要大于等于父类的权限。
2、静态只能覆盖静态,或被静态覆盖。
使用情况:
在子类的构造函数中第一行有一个默认的super()语句。
子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
子类实例化访问父类构造函数原因:
子类继承父类获取到父类的属性,使用父类前要对其进行初始化。
如果父类没有定义空参数构造函数,子类的构造函数必须要用super明确调用父类的构造函数。
子类构造函数中使用this调用本类构造函数,super就没有,用为super和this都只能定义在第一行。
子类中肯定会有其他的构造函数访问父类的构造函数。
作用:隐藏对象的属性和实现细节,仅对外提供公共访问方式
好处:将变化隔离、便于使用、提高重用性、提高安全性
原则:将不需要对外提供的内容都隐藏起来。
把属性都隐藏提供公共方法对其访问。
继承:
好处:提高代码复用性
让类与类之间产生关系,给多态提供前提
弊端:打破了封装性
覆盖:
*主意事项:
1、子类覆盖父类方法时,子类权限必须要大于等于父类的权限。
2、静态只能覆盖静态,或被静态覆盖。
使用情况:
当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义子类中该功能的特有内容时,
就使用覆盖操作完成。
在子类的构造函数中第一行有一个默认的super()语句。
子类中所有的构造函数默认都会访问父类中的空参数的构造函数。
子类实例化访问父类构造函数原因:
子类继承父类获取到父类的属性,使用父类前要对其进行初始化。
如果父类没有定义空参数构造函数,子类的构造函数必须要用super明确调用父类的构造函数。
子类构造函数中使用this调用本类构造函数,super就没有,用为super和this都只能定义在第一行。
子类中肯定会有其他的构造函数访问父类的构造函数。