• final关键字、抽象类、接口


    final关键字

            1:public :访问权限最大

            2:static :内存中只有一份

            3:final  :是一个常量

            4:常量名大写,多个单词用下划线(_)分隔

            5:必须初赋值,赋值后,不能重新赋值。

    成员变量,将不能在发生改变,那么它将变成常量,称为符号常量

    命名规则 : 符号常量的名字,每一个单词全部大写,单词与单词直接通过_进行连接

    被final修饰的常量,必须要赋默认值

    final修饰方法

            该方法是最终方法,不能被子类重写

    final修饰类

            final修饰类 无法被继承,不会有子类

    抽象类

            用abstract关键字修饰的方法,称为抽象方法

            抽象方法的特点:只有方法的声明,没有方法体。

            抽象方法的作用:被子类重写,为子类规定了方法的调用格式,具体的操作内容等待子类去完成。

    抽象类

    用abstract修饰的类(只要包含抽象方法的类必须是抽象类)

    抽象类的特点: 抽象类不能被实例化抽象类的唯一用途就是被子类继承。

    抽象类中可以包含非抽象方法。

    抽象类的作用

    抽象方法 在方法定义的时候在 返回值类型 前面添加 abstract 关键字可以把方法体删除

    当我们一个类中有 抽象方法的时候,我们的这个类就变成了 抽象类

    因为抽象方法只能存在抽象类中,抽象类中可以没有抽象方法

    抽象类中可以有普通方法

    抽象方法存在的目的: 就是被子类进行重写

    当我们的子类 继承了 抽象父类,一定要重写父类中所有的抽象方法,没有重写完依旧是抽象类

    抽象类的其他细节

    抽象类与我们普通类的区别

    普通类可以直接创建对象, 抽象类不能直接创建对象

    抽象类中有普通类中所有内容,只多了一个抽象方法

    一个类中 能否有构造方法与能否创建对象没有关系,与这个类有没有成员变量有关,有成员变量,就有构造方法

    没有成员变量,就没有构造

    final  和  abstract  一定不能同时修饰。因为:抽象类的作用就是被继承,而final修饰的类不能被继承

    接口

    1、接口不能被实例化

    2、接口用来被类实现

    3、接口中可以定义属性和方法:

              接口中的所有属性 默认的修饰符是  public static final,所以定义时必须赋值。

              接口中的所有方法 默认的修饰符是  public abstract

              JDK8开始,接口中可以包含默认方法和静态方法

    默认方法:使用 default 修饰,不可省略,供子类调用或者子类重写。

    静态方法:使用 static 修饰,供接口直接调用。

              JDK9开始,接口中可以包含私有方法

                  私有方法:使用 private 修饰,供接口中的默认方法或者静态方法调用。

    接口没有构造方法

    接口中可以定义属性和方法

    接口的属性是 常量,不是变量

    命名方式 要符合全大写,单词与单词之间通过_进行连接

    没有变量 也就意味着没有构造方法

    接口不能创建对象 既不能实例化

    实现接口

    当一个类实现某个接口时,类中要对接口中的所有抽象方法进行实现(添加方法体,完成方法)

    定义的类 要想与 接口产生关系,我们需要通过一个关键字

    implements 实现的意思

    一个类只能继承一个父类,但能同时实现多个接口。 单继承多实现

    格式:

            class 类名 extends 父类名 implements 接口1,接口2,……{

                   //类的成员

            }

    类和接口直接的关系,叫做实现,这种实现可以多实现

    需要将多个接口中的所有抽象方法进行重写

    当我们的父类中和接口中有相同的方法,会优先于父类进行使用

    接口可以实现多层继承

    接口可以多继承

  • 相关阅读:
    【论文笔记】An Image Patch is a Wave: Phase-Aware Vision MLP
    STL-list
    iOS代码混淆-从入门到放弃
    Hive修改Parquet类型表字段几种问题处理
    SpringBoot的创建和使用
    基于Java web的论坛BBS系统设计与实现
    非零基础自学Java (老师:韩顺平) 第7章 面向对象编程(基础部分) 7.8 构造方法构造器
    使用VScode调试与编写bash脚本
    分布式主键算法
    AI 时代的向量数据库、关系型数据库与 Serverless 技术丨TiDB Hackathon 2023 随想
  • 原文地址:https://blog.csdn.net/weixin_69474097/article/details/126532786