JAVA基础07 版本控制+static+final+abstract

    科技2022-07-11  105

    版本控制概述

    版本控制分类

    优点:便于集中式的代码管理 便于进行权限控制 缺点: 需要联网才可以工作,而且项目庞大的情况下对带宽的要求比较高 中心服务器存在单节点故障风险

    常见的集中式版本控制软件:CVS、SVN

    分布式版本控制 优点:不需要联网也可以工作 不存在单节点故障风险 缺点:无法实现严格的权限控制

    常见的分布式版本控制软件:Git

    static(静态)

    概念 关键字—修饰符 变量、方法、代码块以及类

    修饰变量—静态变量(属性) static修饰的成员变量也叫类变量,随着类的加载(方法区的静态常量池)而加载方法区的静态区,会赋予系统默认初始值,可以用类名点的形式调用也可以通过对象调用,所有的对象都是在共享着这静态变量。 注意:类只加载一次 在类加载的过程中信息自动存入方法区 构造方法中可以定义静态变量?[x 不可以] 构造方法是对象级别且被调用才执行,静态变量与类同级

    修饰方法—静态方法 随着类的加载(方法区静态常量池)而加载到静态区,存储是存储在静态区,当方法被调用的时候被加载到栈中执行(所有的方法和语句都是在栈中执行),可以被类名调用也可以被对象调用 注意: 静态方法中可以定义静态变量?不可以,方法被调用执行 静态方法中可以使用this/super?this和super都是对象级别,静态方法是类级别 main方法可以直接调用非静态方法?不行,静态修饰的内容不能直接调用非静态内容,非静态内容可以调用直接静态内容 静态方法可以重载?可以 静态方法可以重写?不可以,java规定了父子类中只能出现都是static的二分法但是不是重写,要么都不是static就可以重写

    修饰代码块----静态代码块 在方法外类内static{},随着类的加载而只加载一次,用于属性初始化以及程序启动默认需要加载的东西 执行顺序:静态–》对象 父类静态—子类静态—父类对象—子类对象 注意:静态修饰的内容随着类的加载而加载一次

    static int i=1; static{ i=4}

    Java在加载的时候就确定了i是成员变量,就可以往下进行操作,在静态代码块中执行相应的操作(赋值,运算都可以)

    static{ i=3; } static int i=4;

    java开始进行加载发现了i,会根据上下文去确定这个i是什么变量,如果都没有定义就会对这个i进行标记,标记成了成员变量,但是只是一个标记,会把3标记成i的值,只能赋值不能有其他操作,往下找定义找到这个i的定义,会把这个标记的值给下面的i,后面进行正常赋值就把标记值覆盖了,标记也就没了。

    final(最终)

    概念 关键字—修饰符 数据、方法、类

    修饰数据—最终值 修饰基本数据类型的变量的值不发生改变 修饰引用数据类型的变量的地址值不能发生改变,但元素的值可以改变 final修饰的成员变量要在创建对象之前进行赋值,静态常量要在类加载完成之前进行初始化

    修饰方法—最终方法 最终方法可以重载?支持重载 最终方法可以重写?不支持重写

    修饰类—最终类 不能被继承,可以继承别的类 类里的方法可以被重写?不可以

    abstract(抽象)

    关键字----修饰符

    概念 如果所有的子类对父类某个方法都进行了不同的程度的重写,那么此时认为这个方法的方法体就没有了实际意义,把方法体去掉用abstract修饰就变成了抽象方法,如果一个类中有抽象方法那么此时这个类就要变成抽象类注意: 如果一个普通类继承了抽象类就要重写所有的抽象方法,如果不想重写所有就要变成抽象类 抽象类一定有抽象方法?不一定 抽象类能否创建对象?不可以 抽象类的构造方法是在底层由其他语句进行创建的,使用不了

    总结

    static—静态变量(类的信息都是存储在方法区)—静态方法(静态方法与类同级,重写与对象同级)----静态代码块(所有静态内容只加载一次)final----数据(基本数据类型的变量与引用)—方法(不可以重写)----类(不可以被继承)Abstract—抽象方法—抽象方法可以重载?可以----抽象方法可以被private/final/static修饰?不可以------抽象类可以被final修饰?不可以,重写的前提是继承
    Processed: 0.033, SQL: 8