美文网首页
JAVA:继承

JAVA:继承

作者: 确认过眼神啊 | 来源:发表于2020-09-09 13:49 被阅读0次
    • 一种类与类之间的关系
    • 使用已存在的类的定义作为基础建立新类
    • 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类
       
    • 父类 : 基类
    • 字类 : 派生类
      继承的关系
    • 满足"A is a B"的关系就可以形成继承关系
      如:
        猫,狗是动物==>猫,狗继承自动物
        学生,老师是人==>学生,老师继承自人
        小轿车,大卡车是汽车==>小轿车,大卡车继承自汽车
       
      使用extends实现封装
    //一个类只能继承自一个父类
    // 编写父类
    class Animal{
    // 公共的属性和方法
    }
    // 编写字类,继承父类
    class Dog extends Animal{
     // 子类特有的属性和方法
    }
    class Cat extends Animal{
    // 子类特有的属性和方法 
    }
    

     
    方法重写
    语法规则:

    • 返回值类型
    • 方法名
    • 参数类型、顺序、个数都要与父类继承的方法相同
       
      方法重写 vs 方法重载
    • 方法重写:
      a.在满足关系的子类中
      b.方法名、参数个数、顺序、类型与父类、返回值相同
      c.访问修饰符的限定范围大于等于父类方法
    • 方法重载:
      a.在同一个类中
      b.方法名相同
      c.参数个数,顺序,类型不同
      d.返回值类型、访问修饰符任意
     方法存在重写,属性不存在重写
    

    访问修饰符

    • 公有的:public
    • 私有的:private
    • 受保护的:protected
    • 默认
      访问修饰符 本类 同包 子类 其 他
      private ✔️
      默认 ✔️ ✔️
      protected ✔️ ✔️ ✔️
      public ✔️ ✔️ ✔️ ✔️

    super
    子类访问父类成员

      // 访问父类成员方法
      super.print();
      // 访问父类属性
      super.name;
     // 访问父类构造方法
      super();
    
    • 子类的构造的过程中必须调用起父类的构造方法
    • 如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类的无参构造方法
    • 如果子类的构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则编译出错
    • 使用super调用父类指定构造方法,必须在子类的构造方法第一行
       
      super vs this
    • this:当前类对象的引用
      -访问当前类的成员方法
      -访问当前类的成员属性
      -访问当前类的构造方法
      -不能再静态方法中使用
    • super:父类对象的引用
      -访问父类的成员方法
      -访问父类的成员属性
      -访问父类的构造方法
      -不能再静态方法中使用
    • 构造方法调用时,super和this不能同时出现

    实例化顺序

    • 继承后的初始化顺序
      父类静态成员
      子类静态成员
      父类对象构造(属性(赋值)、构造代码块、构造方法)
      子类对象构造(属性(赋值)、构造代码块、构造方法)
       

    Object

    • Object类是所有类的父类
    • 一个类没有使用extends关键字明确标识继承关系,则默认继承Object类(包括数组)
    • Java中的每个类都可以使用Object中定义的方法
      **Object 类的常用方法
    方法 说明
    toString() 返回当前对象本身的有关信息,按字符串对象返回
    equalIs() 比较两个对象是否是同一个对象,实则返回true
    hashCode() 返回该对象的哈希代码值
    getClass() 获取当前对象所属的类信息,返回Class对象

    final

    1、修饰类表示不允许被继承

    2、修饰方法表示不允许被子类重写

      -final修饰的方法可以被继承
      -不能修饰构造方法

    3、小就是变量表示不允许修改

      -方法内部的局部变量:在使用之前被初始化赋值即可
      -类中成员变量:只能在定义时或者构造代码块、构造方法中进行初始化设置
      -基本数据类型的变量:初始赋值止后不能更改
      -引用类型的变量:初始化之后不能再指向另一个对象,但指向的对象的内容是可变的

    4、可配合static使用

    5、使用final修饰可以提高性能,但会降低可扩展性

     

    注解

    JDK1.5版本引入的一个特性

    可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释

    注解的分类

    按照运行机制分

    • 源码注解
    • 编译时注解
    • 运行时注解
      按照来源分
    • 来自JDK的注解
    • 来自第三方的注解
    • 我们自己定义的注解

    相关文章

      网友评论

          本文标题:JAVA:继承

          本文链接:https://www.haomeiwen.com/subject/eqwlektx.html