继承

目标:

  理解继承的概念;

  掌握java中继承的实现方式;

  理解方法重写;

  理解最终类和最终方法;

   开闭原则:

       父类(基类、超类):1):共有属性、2):共有行为;

      ↑

     子类(派生类):1):有特定属性、2)有特定行为;

  指向方向永远是:子类指向父类

   关键字:extends(继承、扩展)

    ”public class XXXXX extends XXXXX(){”

            ↑        ↑

          子类类名     父类类名

  类与类的关系(判断具有继承关系)

    1:hos-a (组合): 拥有;    2:is-a (继承):是一个;

  

  单继承与多继承:

    在java中不允许子类有多个父类;

  在java继承都是单继承

    一个子类只能有一个父类;

  单继承:优点:类层次结构清晰;缺点:丰富度没有多继承的好;

    (单继承通过接口来弥补丰富度不够的问题)

   默认父类:Object (来自 java,JDK,API)

    方法名:共9个方法:先介绍:equals、toString、finalize

  finalize:在Object方法,用于GC垃圾回收程序调用,用于销毁对象(不用程序员调用)

  toString:通过方法名见名知意,返回一个类一个对象(字符串)的描述;

    打印对象、或对对象进行字符串操作的时候就是在调用toString;而来自Object返回:全类名 @ 引用的16为进制类(例“com.lovo.bean.XXXX@11010001” 类的限定名或类全称);

    根据子机的需要重写toString;默认情况下来自Object;

  equals:

    辨析:1)equals:判断两个对象在业务上是否相等;

       2)“==”:判断左右两边两个类返的值相同,假如两边是引用类型,但不能判断两边内容; (判断两个引用是否指向同一个对象)

  方法重写:

    子类将父类的行为重新实现一次,就是方法的重写;

    只是实现部分变一个;  方法名:父类要与子类一样;

  

继承

1:类与类之间的 is-a关系:

    父类(基类、超类):1):共有属性、2):共有行为; 

     ↑(通过extends实现)

    子类(派生类):1):有特定属性、2)有特定行为;

  1):父类所拥有的属性、行为,子类自动具备:(1):父类设计时考虑共有,子类设计时考虑特有;(2):java单继承:优:内层清晰;缺:丰富度不够;

  2):构造方法不能被继承:(1):语法原因;(2):含义原因;

2:Object  → 所有类与数组的根类 → 共9个重要方法:先介绍:equals、toString、finalize

3:方法重写:

  1:方法名必须保持一致;

  2:参数列表必须保持一致;

  3:返回类型必须保持一致;

  4:访问修饰符必须大于等于父类: private、public;

  5:子类重写后的方法不能抛出比父类重写前的方法更多的异常;

  辨析:方法重写:子类在父类继承的方法重新实现一次;

       方法重载:在同一个类中,拥有多个同名方法,参数列表不同,各有各的实现;

4:构造方法:

  构造方法不能被继承:子类不能修改或控制父类;

5:内存:

  内存叠加:先调用父类构造,产生父类对象部分,在调用子类构造,产生子类对象部分,叠加在一起构成一个完整的子类对象;

            

                先调用父类属性,在叠加子类属性;

6:辨析:

  this(指本类):

    this.        此时代表了当前对象;能操作定义在本类上的属性和方法;能操作定义在父类上的被访问修饰符允许访问的属性方法;

    this(  ) 表示调用本类的其它构造,只能写在构造方法中,只能写在构造方法的第一句;

    super(指父类):

    super.  此时代表当前对象的父类对象部分,不能操作定义在本类上的属性和方法,能操作定义在父类上的被访问修饰符,允许属性和方法,只有当在本类中调用被重写方法,重写钱的效果是,才调用super(调父类);

    supre( )调用父类指定的构造方法,只能写在构造方法中;只能写在构造方法的第一句;supre( )不写会有默认,调用父类的公共无参构造;

7:final关键字:(不能变)

  当用final修饰一个类,这个类不能被继承,称为最终类,终态类;

  “public final class xxxx extends xxxx( ){"                可以修饰变量;

        ↑                                 可以修饰方法;

     不可在继承                             可以修饰类;

  这种类是不能产生子类; 

  方法用final修饰就表示该方法不能被重写
  ”public final void methodA(){“

  

  

原文地址:https://www.cnblogs.com/scxu28/p/6135505.html