面向对象三大特性: 封装性;继承性;多态性(后面讲);
封装性:体现程序的安全;
继承: 体现程序的扩展性 以及代码复用;
继承的使用:
一个类使用 extends 继承另一个类<br />**格式 :** **public class 子类名 extends 父类名**<br /> 那么当前类就是子类(sub class)<br /> 被继承的类就是父类/超类(super class)
一旦使用继承就可以提高代码的复用率<br /> 因为: 子类继承父类 会继承父类权限范围内所拥有的成员<br /> 子类可以直接调用父类的成员属性/方法
继承中的成员访问:
继承中变量访问
继承中访问成员方法:
通过一个子类对象访问一个成员方法
继承的优点:
多个类同样的属性和方法 统一定义在父类中,提高了代码的复用率<br /> **子类功能往往比父类更加强大**---->**一般用作程序功能的扩展**<br /> **提高了程序的维护性** <br /> 同样的功能在父类定义,一旦修改,所有子类都会修改<br /> **真正的让类和类产生关系 继承是多态性的前提**
继承的限制:
**1.**子类只能继承父类的成员<br /> 父类的非私有成员子类对象也可以调用
**2.**一个类只能继承一个父类 单根继承(会出现多个父类同样的成员冲突问题)
**3.**一个类可以有多个子类<br /> java不可以多继承 也就是一个子类只能有一个父类<br /> 但是一个父类可以有多个子类去继承
**4.**java支持多层继承(所有的父类的功能都可以继承过来)<br /> 子类继承父类 父类也可以继续去继承其他父类<br /> 那么当前子类会继承所有父类的所有非私用成员<br /> 子类功能更加强大
**5.**不能继承父类权限范围外的成员(父类用private修饰的成员)<br /> 只能继承非私有成员
6.**不能单纯的为了想要一个类的某一个功能而去继承!**<br /> 因为继承就会把父类所有非私有成员都继承过来<br /> 用得上的和用不上的 都继承了<br /> 如何判断什么时候该用继承: 假设法 ...is a...<br /> 什么 是一个 什么 例如: 司机是一个人 司机extends人<br /> 学生是一个人 学生 extends 人<br /> 老虎 extends 动物
7.类和类产生关系,联系更紧密,过分依赖 耦合度比较高<br /> 编程讲究 **低耦合高内聚**
8.**子类继承父类的非私有成员,那么就需要父类提供非私有成员,**<br /> 一旦父类有非私有成员,则打破了封装性<br /> 原本需要一个类把成员进行私有<br /> 但是为了提供给继承使用<br /> 成员不再私有 相当于打破了封装