目录
本总结只简单的概括和总结一些特点及原因
一、static类变量(静态变量)
语法格式:访问修饰符+static+类型+变量名(static和访问修饰符可交换位置)
特点:<1>static可以修饰成员变量,方法,代码块,注意static不可以修饰局部变量
原因:在Java语言中,
static
关键字通常用于修饰类的成员变量或方法,用于指定它们是类级别的,而不是对象级别的。由于局部变量是在方法内部声明的,仅在方法作用域内存在,因此不能使局部变量具有类级别的属性。具体来说,使用
static
关键字修饰一个变量会指定其在内存中有一个单独的存储空间。而局部变量的生命周期只限于方法的执行过程中,方法执行完毕后它们就会被释放,因此无法为它们单独分配内存空间。另外,因为方法可以在不同的线程中并行执行,如果使用static
修饰局部变量,则可能导致多个线程之间发生冲突和数据不一致的问题。因此,
static
关键字仅适用于类级别的变量和方法。对于局部变量,应该仅在方法内部使用,并在方法执行完毕后释放它们。<2>静态变量可以访问静态属性和静态方法,但是不可以访问非静态属性和方法
原因:静态比非静态加载的早。
<3>static修饰的属性,方法可以直接使用类名.方法名/类名.属性名调用,
<4>静态方法中没有this和super
原因:在Java中,静态方法是与类直接关联的,而不是与类的实例相关联的。因此,静态方法不能直接引用任何实例级别的变量或方法,包括this和super关键字。这是因为this关键字是对当前对象的引用,而静态方法没有实例,不可能引用当前对象,所以使用this关键字无意义。同样地,super关键字也无法在静态方法中使用,因为它用于引用当前类的父类中的方法或变量,而静态方法不会被继承。
二、final修饰符
语法格式:访问修饰符+final+类型+变量名(final和访问修饰符可交换位置)
特点:<1>final 可以修饰类、属性、方法和局部变量
<2>使用final修饰的类是不允许被继承的,类使用final方法就没必要使用final了,所以final修饰的类没有子类。
<3>final属性的赋值是有时机的,可以在定义时、构造器中、代码块中赋值,只能赋值一次,赋值后就不允许修改了。
<4>static和final搭配使用后,改属性就不会使类加载了。
<5>(父类非final类)final修饰的方法可以被子类继承,但是不允许覆盖。
三、abstract修饰符
语法格式:访问修饰符+abstract+类型+变量名(abstract和访问修饰符可交换位置)
特点: <1>抽象方法没有方法体。
<2>当类中有抽象方法时,需要将类声明为抽象类 注意abstract class顺序不能变。
<3>抽象类不能单独实例化(new 对象),但可以声明引用。
<4>abstract只能修饰类和方法,不能修饰属性。
<5>一个非抽象类继承了抽象类后必须重写父类的全部抽象方法。
<6> 抽象方法不能使用private,final,static修饰。
<7>抽象类中不一定有构造方法