面向对象三大特性: 封装性;继承性;多态性(后面讲);

封装性:体现程序的安全;

继承: 体现程序的扩展性 以及代码复用;

继承的使用:

  1. 一个类使用 extends 继承另一个类<br />**格式 :** **public class 子类名 extends 父类名**<br /> 那么当前类就是子类(sub class)<br /> 被继承的类就是父类/超类(super class)
  2. 一旦使用继承就可以提高代码的复用率<br /> 因为: 子类继承父类 会继承父类权限范围内所拥有的成员<br /> 子类可以直接调用父类的成员属性/方法

继承中的成员访问:

继承中变量访问
image.pngimage.pngimage.png
继承中访问成员方法:
通过一个子类对象访问一个成员方法
image.png

继承的优点:

        多个类同样的属性和方法 统一定义在父类中,提高了代码的复用率<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 />                成员不再私有 相当于打破了封装