Java 关键字详解(持续更新中)

abstract:
    表明类或者成员方法具有抽象熟悉。
 
    修饰类,抽象类:
        抽象类不能被实例化;
        抽象类中可以有属性、方法、构造,都是用来给子类继承的;
        抽象类中的方法不一定全是抽象方法;
        抽象类可以继承抽象类。
 
    修饰方法,抽象方法:
        抽象方法没有方法题;
        抽象方法不需要自己实现,需要子类来实现;
        抽象方法必须出现在抽象类中;
        一个类继承抽象类必须实现其所有的抽象方法。
 
应用场景:
    父类知道子类包含某个方法,但不知道子类如何实现方法的情况下;
    从多个具有相同特性的类中抽象出一个抽象类,以这个类作为其他子类的模版,从而避免子类设计的随意性。
 
目的/作用:
    不关注子类的实现,但约束子类,必须有哪些特征;
    限制规定子类必须实现某种方法,但不关注实现细节。
 
使用规则:
    1.abstract定义抽象类
    2.abstract定于你抽象方法,只声明,不需要实现
    3.包含抽象方法的类就是抽象类
    4.抽象类中可以包含普通方法,也可以没有抽象方法
    5.抽象类不能直接创建,定义一个引用变量只想一个子类的对象
 
transient:
    将不许被序列化的字段使用transient进行修饰;
    修饰后的字段的生命周期仅存于调用者的内存中,而不会写到磁盘里持久化。
 
    一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量在序列化后将无法获得访问。
    transient只能修饰变量,不能修饰类或方法;本地变量不能被transient关键字进行修饰。变量如果是用户自定义类的变量则该类需要实现Serializable接口。
    
    被transient修饰的变量不再能被序列化,一个静态变量不论是否被transient修饰,均不能被序列化。
 
final:
    修饰变量:
        被final修饰的变量必须赋初始值,且变量名要大写。
        初始化可以有三种方式:
            1.定义时赋值
            2.构造中赋值
            3.在静态代码块中为final实例变量赋值
        final修饰的变量为常量,值不可修改,对于对象变量来说其引用不可变,即不能再指向其他对象,但是对象的值是可以改变的。
 
    修饰方法:
        当父类的方法被final修饰时,子类不能重写其方法;
        final修饰的方法可以被重载。
    
    修饰类:
        当一个类被final修饰后,子类不能继承这个类。
 
static:
    static方法:
        static方法一般称为静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,业务他不依附于任务对象;
        在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为他们都必须依赖具体的对象才能够被调用;
        但是非静态成员方法中可以访问静态成员方法/变量。
 
    static变量:
        static变量也称为静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象共享,在内存中只存在一个副本,他只有在类被初次加载是被初始化。而非静态变量是对象所拥有的,在创建对象是被初始化,存在多个副本,而各个对象的副本互不影响。
 
    static代码块:
        使用静态代码块从而优化程序性能。
        static代码块可以放到类中的任何地方,类中可以有多个static代码块,在类初次被加载的时候,会按照static代码块的顺序来执行每个static代码,并且只会执行一次。

猜你喜欢

转载自www.cnblogs.com/vvega/p/10721760.html
今日推荐